When loading a draft:
If the draft was created from a different account than the current one:
If the draft was in reply to a status, don't allow it to be loaded.
If the draft was not in reply to a status, prompt the user whether
or not to load the draft.
If the draft was in reply to a different status than the current one:
Prompt the user whether or not to load the draft.
Otherwise, load the draft.
Draft replies created from other accounts can't be loaded from different
accounts because the status for inReplyToID of the draft will have a
different instance-local ID if the two accounts are on different
instances.
See #16
The instance timeline controller needs to store a strong reference to
the instance-specific MastodonController since the timeline VC only
holds a weak reference, and unlike normal screens, the scene session
doesn't hold onto the MastodonController for other instances.
When the requested range has no results, no pagination data is returned,
so the existing `newer` request range is replaced with nil. As there
was no new data, the existing request range is still correct and should
not be replaced.
Fixes#75
dependency injection
The places still using the .shared property are cases where there is no
view controller from which to (easily) get the appropriate instance,
such as user activity and X-Callback-URL handling. These uses will need
to be revisited once there are multiple MastodonControllers.
See #16
selector search field
With Combine Cancellables are automatically cancelled on deinit, so the
instance selector needs to hold on to a reference to pipeline
cancellable for its lifetime, otherwise it's cancelled immediately after
creation.
Closes#59
The newly created draft needs to be set to the compose VC's currentDraft
so that it gets removed after the status is successfully created.
Also, save the drafts to disk after saving a draft so that crashes don't
cause draft loss.