@mica/sdk (SDK contract v1)
    Preparing search index...

    Function useMedia

    • The media gallery — the client face of the media service.

      Returns {
          capturePhoto: (data: string, thumbnail?: string) => Promise<MediaItem>;
          deletePhoto: (id: number) => Promise<void>;
          dropNearby: (mediaId: number) => Promise<{ count: number }>;
          fullMedia: (mediaId: number) => Promise<MediaItem>;
          getDeletedMedia: () => Promise<DeletedMediaItem[]>;
          media: {
              add: (
                  draft: Omit<
                      MediaItem,
                      "id"
                      | "citizenid"
                      | "created_at"
                      | "updated_at",
                  >,
              ) => Promise<MediaItem>;
              delete: (mediaId: number) => Promise<void>;
              dropNearby: (mediaId: number) => Promise<{ count: number }>;
              full: (mediaId: number) => Promise<MediaItem>;
              getDeleted: () => Promise<DeletedMediaItem[]>;
              hasMore: Readable<boolean>;
              hydrate: (item: MediaPreview) => void;
              load: (filter?: Record<string, unknown>) => Promise<void>;
              loaded: Readable<boolean>;
              receive: (mediaId?: number) => Promise<void>;
              restore: (mediaId: number) => Promise<boolean>;
              setThumbnail: (mediaId: number, thumbnail: string) => Promise<boolean>;
              setWaypoint: (x: number, y: number) => Promise<void>;
              shareLocation: () => Promise<{ id: number; media: MediaPreview }>;
              loadMore(): Promise<boolean>;
              prepend(row: MediaItem): void;
              remove(id: number): void;
              replace(row: MediaItem): void;
              subscribe(
                  this: void,
                  run: Subscriber<MediaItem[]>,
                  invalidate?: () => void,
              ): Unsubscriber;
          };
          restoreMedia: (mediaId: number) => Promise<boolean>;
      }

      • capturePhoto: (data: string, thumbnail?: string) => Promise<MediaItem>
      • deletePhoto: (id: number) => Promise<void>
      • dropNearby: (mediaId: number) => Promise<{ count: number }>
      • fullMedia: (mediaId: number) => Promise<MediaItem>

        One row with its bytes.

        Named on the facet rather than left to media.full on the store, because the store an iframe gets is a Readable and has no methods on it at all. Every surface that hands over an original rather than a tile needs this now that the list read carries neither (MICA-110) — the avatar picker and the wallpaper picker both do, and both are reachable from a sandboxed app.

      • getDeletedMedia: () => Promise<DeletedMediaItem[]>

        The "Recently Deleted" list (MICA-75-wiring). Named here rather than left to media.getDeleted/media.restore on the store above, for the same reason fullMedia already is: the store an iframe gets is a Readable with no methods on it at all, so anything an add-on needs to call has to be its own facet member.

      • media: {
            add: (
                draft: Omit<
                    MediaItem,
                    "id"
                    | "citizenid"
                    | "created_at"
                    | "updated_at",
                >,
            ) => Promise<MediaItem>;
            delete: (mediaId: number) => Promise<void>;
            dropNearby: (mediaId: number) => Promise<{ count: number }>;
            full: (mediaId: number) => Promise<MediaItem>;
            getDeleted: () => Promise<DeletedMediaItem[]>;
            hasMore: Readable<boolean>;
            hydrate: (item: MediaPreview) => void;
            load: (filter?: Record<string, unknown>) => Promise<void>;
            loaded: Readable<boolean>;
            receive: (mediaId?: number) => Promise<void>;
            restore: (mediaId: number) => Promise<boolean>;
            setThumbnail: (mediaId: number, thumbnail: string) => Promise<boolean>;
            setWaypoint: (x: number, y: number) => Promise<void>;
            shareLocation: () => Promise<{ id: number; media: MediaPreview }>;
            loadMore(): Promise<boolean>;
            prepend(row: MediaItem): void;
            remove(id: number): void;
            replace(row: MediaItem): void;
            subscribe(
                this: void,
                run: Subscriber<MediaItem[]>,
                invalidate?: () => void,
            ): Unsubscriber;
        }
      • restoreMedia: (mediaId: number) => Promise<boolean>