@@ -14,6 +14,7 @@ struct NoteletSheet: ViewModifier {
1414 let version : NoteletPresentedVersion ?
1515 let onDismiss : ( ) -> Void
1616 let configuration : NoteletConfiguration
17+ let userDefaults : UserDefaults
1718
1819 private var versionToShow : String ? {
1920 switch version {
@@ -43,8 +44,8 @@ struct NoteletSheet: ViewModifier {
4344 }
4445
4546 private var isCurrentVersionAlreadySeen : Bool {
46- UserDefaults . standard . string (
47- forKey: NOTELET_APP_STORAGE_LATEST_SEEN_APP_VERSION_KEY
47+ userDefaults . string (
48+ forKey: NoteletStorageKey . latestSeenAppVersion
4849 ) == Helpers . getCurrentAppVersion ( )
4950 }
5051
@@ -83,26 +84,35 @@ struct NoteletSheet: ViewModifier {
8384
8485 private func handleDismiss( ) {
8586 if isCurrentVersionMode {
86- NoteletStorage . markCurrentVersionAsSeen ( )
87+ NoteletStorage . markCurrentVersionAsSeen ( userDefaults : userDefaults )
8788 }
88-
89+
8990 onDismiss ( )
9091 }
9192}
9293
9394extension View {
95+ /// Attach a release-notes sheet to the modified view.
96+ ///
97+ /// - Parameter userDefaults: Storage backing the "seen version" check used
98+ /// in `.current` presentation mode. Defaults to `.standard`. Pass an App
99+ /// Group `UserDefaults` (e.g. `UserDefaults(suiteName: "group.com.example.myapp")`)
100+ /// when the host app needs to share "seen" state with an extension
101+ /// target like a widget, intent, or share extension.
94102 public func noteletSheet(
95103 notes: [ NoteletVersionNotes ] ,
96104 version: NoteletPresentedVersion ? = nil ,
97105 onDismiss: @escaping ( ) -> Void = { } ,
98- configuration: NoteletConfiguration = . init( )
106+ configuration: NoteletConfiguration = . init( ) ,
107+ userDefaults: UserDefaults = . standard
99108 ) -> some View {
100109 modifier (
101110 NoteletSheet (
102111 notes: notes,
103112 version: version,
104113 onDismiss: onDismiss,
105- configuration: configuration
114+ configuration: configuration,
115+ userDefaults: userDefaults
106116 )
107117 )
108118 }
0 commit comments