@@ -19,6 +19,9 @@ struct AppListView: View {
19
19
@State var selectorOpenedURL : URLIdentifiable ? = nil
20
20
@State var selectedIndex : String ? = nil
21
21
22
+ @State var isWarningPresented = false
23
+ @State var temporaryOpenedURL : URLIdentifiable ? = nil
24
+
22
25
@AppStorage ( " isAdvertisementHidden " )
23
26
var isAdvertisementHidden : Bool = false
24
27
@@ -27,7 +30,8 @@ struct AppListView: View {
27
30
!appList. isPaidProductInstalled &&
28
31
!appList. filter. isSearching &&
29
32
!appList. filter. showPatchedOnly &&
30
- !appList. isRebuildNeeded
33
+ !appList. isRebuildNeeded &&
34
+ !appList. isSelectorMode
31
35
}
32
36
33
37
var appString : String {
@@ -52,6 +56,33 @@ struct AppListView: View {
52
56
}
53
57
54
58
var body : some View {
59
+ if #available( iOS 15 , * ) {
60
+ content
61
+ . alert (
62
+ NSLocalizedString ( " Notice " , comment: " " ) ,
63
+ isPresented: $isWarningPresented,
64
+ presenting: temporaryOpenedURL
65
+ ) { result in
66
+ Button ( role: . destructive) {
67
+ selectorOpenedURL = result
68
+ } label: {
69
+ Text ( NSLocalizedString ( " Continue " , comment: " " ) )
70
+ }
71
+ Button ( role: . cancel) {
72
+ temporaryOpenedURL = nil
73
+ isWarningPresented = false
74
+ } label: {
75
+ Text ( NSLocalizedString ( " Cancel " , comment: " " ) )
76
+ }
77
+ } message: {
78
+ Text ( OptionView . warningMessage ( [ $0. url] ) )
79
+ }
80
+ } else {
81
+ content
82
+ }
83
+ }
84
+
85
+ var content : some View {
55
86
NavigationView {
56
87
ScrollViewReader { reader in
57
88
ZStack {
@@ -77,13 +108,19 @@ struct AppListView: View {
77
108
. environmentObject ( AppListModel ( selectorURL: urlWrapper. url) )
78
109
}
79
110
. onOpenURL { url in
80
- guard url. isFileURL , (
81
- url. pathExtension . lowercased ( ) == " dylib " ||
82
- url . pathExtension . lowercased ( ) == " deb "
83
- ) else {
111
+ let ext = url. pathExtension . lowercased ( )
112
+ guard url. isFileURL ,
113
+ ext == " dylib " || ext == " deb "
114
+ else {
84
115
return
85
116
}
86
- selectorOpenedURL = URLIdentifiable ( url: preprocessURL ( url) )
117
+ let urlIdent = URLIdentifiable ( url: preprocessURL ( url) )
118
+ if ext == " deb " {
119
+ temporaryOpenedURL = urlIdent
120
+ isWarningPresented = true
121
+ } else {
122
+ selectorOpenedURL = urlIdent
123
+ }
87
124
}
88
125
. onAppear {
89
126
if Double . random ( in: 0 ..< 1 ) < 0.1 {
0 commit comments