Current section

Files

Jump to
mob lib mob files.ex
Raw

lib/mob/files.ex

defmodule Mob.Files do
@moduledoc """
System file picker. Opens the OS document picker (Files app on iOS, SAF on Android).
No permission required — the user explicitly selects files.
Results arrive as:
handle_info({:files, :picked, items}, socket)
handle_info({:files, :cancelled}, socket)
Each item in `items` is:
%{path: "/tmp/mob_file_xxx.pdf", name: "report.pdf",
mime: "application/pdf", size: 102400}
iOS: `UIDocumentPickerViewController`. Android: `OpenMultipleDocuments`.
"""
@spec pick(Mob.Socket.t(), keyword()) :: Mob.Socket.t()
def pick(socket, opts \\ []) do
types = Keyword.get(opts, :types, ["*/*"])
types_json = :json.encode(types)
:mob_nif.files_pick(types_json)
socket
end
end