def METHOD_NAME(filesystem_id: str, fn: str) -> werkzeug.Response:
    """
    Marks the file being download (the file being downloaded is either a submission message,
    submission file attachment, or journalist reply) as seen by the current logged-in user and
    send the file to a client to be saved or opened.
    """
    if ".." in fn or fn.startswith("/"):
        abort(404)
    file = Storage.get_default().path(filesystem_id, fn)
    if not Path(file).is_file():
        flash(
            gettext(
                "Your download failed because the file could not be found. An admin can find "
                + "more information in the system and monitoring logs."
            ),
            "error",
        )
        current_app.logger.error(f"File {file} not found")
        return redirect(url_for("col.col", filesystem_id=filesystem_id))
    # mark as seen by the current user
    try:
        journalist = session.get_user()
        if fn.endswith("reply.gpg"):
            reply = Reply.query.filter(Reply.filename == fn).one()
            mark_seen([reply], journalist)
        elif fn.endswith(("-doc.gz.gpg", "doc.zip.gpg")):
            submitted_file = Submission.query.filter(Submission.filename == fn).one()
            mark_seen([submitted_file], journalist)
        else:
            message = Submission.query.filter(Submission.filename == fn).one()
            mark_seen([message], journalist)
    except NoResultFound as e:
        current_app.logger.error(f"Could not mark {fn} as seen: {e}")
    return send_file(
        Storage.get_default().path(filesystem_id, fn),
        mimetype="application/pgp-encrypted",
    )