automerge / automerge-swift

Swift language bindings presenting Automerge

Home Page:https://automerge.org/automerge-swift/documentation/automerge/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tranferrable conformance

heckj opened this issue · comments

After having worked with getting things operational with the demo application MeetingNotes, it looks like it would be notably useful to have built-in conformance for an Automerge.Document to the Transferrable protocol.

This is macOS 13+, ios16+ stuff for the library, but would be a big convenience for supporting future app interactions that move or share data, like the Share button, drag and drop, and copy and paste. For an overview of what Transferrable is about, see Core Transferable.

Digging into Transferrable, there's a quirky issue with defining such in a library - a library (such as Automerge-swift) can define a new Uniform Type Identifier, but it can't define any conformances for that type. (per Q&A at https://developer.apple.com/forums/thread/735677)

As a result, the documentation for HOW to use this cool new capability needs to be added as well - in particular, the end-user of the library (at the "app" level) needs to define the type (if they use it) and any conformances it has (public.data is the obvious one, but there could easily be more if they're using it for an on-disk file format - then public.content would be another expected conformance)