Skip to content

Commit 902f63d

Browse files
committed
feat: deb notice
Signed-off-by: 82Flex <82flex@gmail.com>
1 parent 225ed91 commit 902f63d

File tree

2 files changed

+45
-8
lines changed

2 files changed

+45
-8
lines changed

TrollFools/AppListView.swift

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ struct AppListView: View {
1919
@State var selectorOpenedURL: URLIdentifiable? = nil
2020
@State var selectedIndex: String? = nil
2121

22+
@State var isWarningPresented = false
23+
@State var temporaryOpenedURL: URLIdentifiable? = nil
24+
2225
@AppStorage("isAdvertisementHidden")
2326
var isAdvertisementHidden: Bool = false
2427

@@ -27,7 +30,8 @@ struct AppListView: View {
2730
!appList.isPaidProductInstalled &&
2831
!appList.filter.isSearching &&
2932
!appList.filter.showPatchedOnly &&
30-
!appList.isRebuildNeeded
33+
!appList.isRebuildNeeded &&
34+
!appList.isSelectorMode
3135
}
3236

3337
var appString: String {
@@ -52,6 +56,33 @@ struct AppListView: View {
5256
}
5357

5458
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 {
5586
NavigationView {
5687
ScrollViewReader { reader in
5788
ZStack {
@@ -77,13 +108,19 @@ struct AppListView: View {
77108
.environmentObject(AppListModel(selectorURL: urlWrapper.url))
78109
}
79110
.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 {
84115
return
85116
}
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+
}
87124
}
88125
.onAppear {
89126
if Double.random(in: 0 ..< 1) < 0.1 {

TrollFools/OptionView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct OptionView: View {
4646
}
4747
} message: {
4848
if case .success(let urls) = $0 {
49-
Text(warningMessage(urls))
49+
Text(Self.warningMessage(urls))
5050
}
5151
}
5252
} else {
@@ -140,7 +140,7 @@ struct OptionView: View {
140140
}
141141
}
142142

143-
private func warningMessage(_ urls: [URL]) -> String {
143+
static func warningMessage(_ urls: [URL]) -> String {
144144
guard let firstDylibName = urls.first(where: { $0.pathExtension.lowercased() == "deb" })?.lastPathComponent else {
145145
fatalError("No debian package found.")
146146
}

0 commit comments

Comments
 (0)