Keep share extension helpers target-local

This commit is contained in:
jack
2026-07-10 15:11:12 -04:00
parent 19c06f360d
commit 6d373100d9
2 changed files with 5 additions and 12 deletions
@@ -45,10 +45,6 @@ struct SharedContentPayload: Codable, Sendable, Equatable, Identifiable {
SharedContentPayload(kind: .text, content: content, createdAt: createdAt) SharedContentPayload(kind: .text, content: content, createdAt: createdAt)
} }
static func url(_ url: URL, title: String?, createdAt: Date = Date()) -> SharedContentPayload {
SharedContentPayload(kind: .url, content: url.absoluteString, title: title, createdAt: createdAt)
}
var composerText: String { content } var composerText: String { content }
var preview: String { var preview: String {
@@ -148,11 +144,6 @@ final class SharedContentStore {
self.decoder = JSONDecoder() self.decoder = JSONDecoder()
} }
convenience init?(suiteName: String) {
guard let defaults = UserDefaults(suiteName: suiteName) else { return nil }
self.init(defaults: defaults)
}
/// Replaces any older pending share with a validated, bounded envelope. /// Replaces any older pending share with a validated, bounded envelope.
func stage(_ payload: SharedContentPayload, now: Date = Date()) throws { func stage(_ payload: SharedContentPayload, now: Date = Date()) throws {
try payload.validate(now: now) try payload.validate(now: now)
@@ -148,8 +148,9 @@ final class ShareViewController: UIViewController {
// MARK: - Save + Finish // MARK: - Save + Finish
private func saveAndFinish(url: URL, title: String?) { private func saveAndFinish(url: URL, title: String?) {
let payload = SharedContentPayload.url( let payload = SharedContentPayload(
url, kind: .url,
content: url.absoluteString,
title: title ?? url.host ?? Strings.sharedLinkTitleFallback title: title ?? url.host ?? Strings.sharedLinkTitleFallback
) )
stageAndFinish(payload) stageAndFinish(payload)
@@ -160,10 +161,11 @@ final class ShareViewController: UIViewController {
} }
private func stageAndFinish(_ payload: SharedContentPayload) { private func stageAndFinish(_ payload: SharedContentPayload) {
guard let store = SharedContentStore(suiteName: Self.groupID) else { guard let defaults = UserDefaults(suiteName: Self.groupID) else {
finishWithMessage(Strings.failedToSave) finishWithMessage(Strings.failedToSave)
return return
} }
let store = SharedContentStore(defaults: defaults)
do { do {
try store.stage(payload) try store.stage(payload)