@@ -12,14 +12,26 @@ struct StatusMessageDisplay: View {
12
12
@EnvironmentObject var api : APIClient
13
13
@EnvironmentObject var errorService : ErrorService
14
14
15
+ @AppStorage ( " dismissedNotificationsIDs4 " ) var _dismissedNotificationsIDs : String = " "
16
+
17
+ var dismissedNotificationsIDs : [ String ] {
18
+ let x = _dismissedNotificationsIDs. split ( separator: " , " )
19
+ return x. map { String ( $0) }
20
+ }
21
+
15
22
@State var statusMessages : [ DTOv2 . StatusMessage ] = [ ]
16
23
17
24
let timer = Timer . publish ( every: 60 , on: . main, in: . common) . autoconnect ( )
18
25
19
26
var body : some View {
20
27
VStack ( spacing: 0 ) {
21
28
ForEach ( statusMessages) { message in
22
- StatusMessageBanner ( statusMessage: message)
29
+ if !dismissedNotificationsIDs. contains ( message. id) {
30
+ StatusMessageBanner ( statusMessage: message)
31
+ . onTapGesture {
32
+ dismissNotification ( id: message. id)
33
+ }
34
+ }
23
35
}
24
36
}
25
37
. onAppear ( perform: loadMessages)
@@ -28,6 +40,15 @@ struct StatusMessageDisplay: View {
28
40
}
29
41
}
30
42
43
+ func dismissNotification( id: String ) {
44
+ if dismissedNotificationsIDs. count > 20 {
45
+ let dismissedNotificationsIDsCopy = dismissedNotificationsIDs. suffix ( 20 )
46
+ _dismissedNotificationsIDs = dismissedNotificationsIDsCopy. joined ( separator: " , " )
47
+ _dismissedNotificationsIDs. append ( " , " )
48
+ }
49
+ _dismissedNotificationsIDs. append ( id + " , " )
50
+ }
51
+
31
52
func loadMessages( ) {
32
53
statusMessages = [ ]
33
54
loadOrganizationStatusMessages ( )
0 commit comments