Skip to content

Commit 1d1b87e

Browse files
committed
feat: add bookmarks to start page (fixes #360) and explain what a bookmark does (fixes #359)
Signed-off-by: Tommy van der Vorst <tommy@pixelspark.nl>
1 parent f92f2c0 commit 1d1b87e

File tree

6 files changed

+288
-56
lines changed

6 files changed

+288
-56
lines changed

Localizable.xcstrings

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6762,6 +6762,52 @@
67626762
}
67636763
}
67646764
},
6765+
"Bookmarks" : {
6766+
"localizations" : {
6767+
"de" : {
6768+
"stringUnit" : {
6769+
"state" : "translated",
6770+
"value" : "Lesezeichen"
6771+
}
6772+
},
6773+
"es" : {
6774+
"stringUnit" : {
6775+
"state" : "translated",
6776+
"value" : "Marcadores"
6777+
}
6778+
},
6779+
"it" : {
6780+
"stringUnit" : {
6781+
"state" : "translated",
6782+
"value" : "Segnalibri"
6783+
}
6784+
},
6785+
"ja" : {
6786+
"stringUnit" : {
6787+
"state" : "translated",
6788+
"value" : "ブックマーク"
6789+
}
6790+
},
6791+
"nl" : {
6792+
"stringUnit" : {
6793+
"state" : "translated",
6794+
"value" : "Bladwijzers"
6795+
}
6796+
},
6797+
"uk" : {
6798+
"stringUnit" : {
6799+
"state" : "translated",
6800+
"value" : "Закладки"
6801+
}
6802+
},
6803+
"zh-Hans" : {
6804+
"stringUnit" : {
6805+
"state" : "translated",
6806+
"value" : "书签"
6807+
}
6808+
}
6809+
}
6810+
},
67656811
"Briefly after leaving app" : {
67666812
"localizations" : {
67676813
"de" : {
@@ -26236,6 +26282,52 @@
2623626282
}
2623726283
}
2623826284
},
26285+
"Remove bookmark" : {
26286+
"localizations" : {
26287+
"de" : {
26288+
"stringUnit" : {
26289+
"state" : "translated",
26290+
"value" : "Lesezeichen entfernen"
26291+
}
26292+
},
26293+
"es" : {
26294+
"stringUnit" : {
26295+
"state" : "translated",
26296+
"value" : "Eliminar marcador"
26297+
}
26298+
},
26299+
"it" : {
26300+
"stringUnit" : {
26301+
"state" : "translated",
26302+
"value" : "Rimuovi segnalibro"
26303+
}
26304+
},
26305+
"ja" : {
26306+
"stringUnit" : {
26307+
"state" : "translated",
26308+
"value" : "ブックマークを削除"
26309+
}
26310+
},
26311+
"nl" : {
26312+
"stringUnit" : {
26313+
"state" : "translated",
26314+
"value" : "Bladwijzer verwijderen"
26315+
}
26316+
},
26317+
"uk" : {
26318+
"stringUnit" : {
26319+
"state" : "translated",
26320+
"value" : "Видалити закладку"
26321+
}
26322+
},
26323+
"zh-Hans" : {
26324+
"stringUnit" : {
26325+
"state" : "translated",
26326+
"value" : "删除书签"
26327+
}
26328+
}
26329+
}
26330+
},
2623926331
"Remove file from all devices" : {
2624026332
"localizations" : {
2624126333
"de" : {
@@ -37698,6 +37790,98 @@
3769837790
}
3769937791
}
3770037792
},
37793+
"This location has been added to your bookmarks. Bookmarked locations can be accessed quickly from the start page, or by long-tapping the app icon om the home screen." : {
37794+
"localizations" : {
37795+
"de" : {
37796+
"stringUnit" : {
37797+
"state" : "translated",
37798+
"value" : "Dieser Ort wurde zu Ihren Lesezeichen hinzugefügt. Markierte Orte können schnell von der Startseite aus oder durch langes Tippen auf das App-Symbol auf dem Homescreen aufgerufen werden."
37799+
}
37800+
},
37801+
"es" : {
37802+
"stringUnit" : {
37803+
"state" : "translated",
37804+
"value" : "Esta ubicación ha sido añadida a tus marcadores. Las ubicaciones marcadas se pueden acceder rápidamente desde la página de inicio, o manteniendo presionado el ícono de la aplicación en la pantalla de inicio."
37805+
}
37806+
},
37807+
"it" : {
37808+
"stringUnit" : {
37809+
"state" : "translated",
37810+
"value" : "Questa posizione è stata aggiunta ai tuoi segnalibri. Le posizioni nei segnalibri possono essere accedute rapidamente dalla pagina iniziale o tenendo premuto a lungo l'icona dell'app nella schermata principale."
37811+
}
37812+
},
37813+
"ja" : {
37814+
"stringUnit" : {
37815+
"state" : "translated",
37816+
"value" : "このロケーションはブックマークに追加されました。ブックマークしたロケーションは、スタートページから、またはホーム画面でアプリアイコンを長押ししてすばやくアクセスできます。"
37817+
}
37818+
},
37819+
"nl" : {
37820+
"stringUnit" : {
37821+
"state" : "translated",
37822+
"value" : "Deze locatie is aan je bladwijzers toegevoegd. Bladwijzerlocaties kunnen snel worden geopend vanaf de startpagina of door lang op het app-pictogram op het startscherm te tikken."
37823+
}
37824+
},
37825+
"uk" : {
37826+
"stringUnit" : {
37827+
"state" : "translated",
37828+
"value" : "Це місце додано до ваших закладок. До закладених місць можна швидко отримати доступ з головної сторінки або шляхом довгого натискання на іконку додатку на домашньому екрані."
37829+
}
37830+
},
37831+
"zh-Hans" : {
37832+
"stringUnit" : {
37833+
"state" : "translated",
37834+
"value" : "此位置已添加到您的书签。可以通过快速访问页面或长按主屏幕上的应用图标快速访问书签位置。"
37835+
}
37836+
}
37837+
}
37838+
},
37839+
"This location has been added to your bookmarks. Bookmarked locations can be accessed quickly from the start page." : {
37840+
"localizations" : {
37841+
"de" : {
37842+
"stringUnit" : {
37843+
"state" : "translated",
37844+
"value" : "Dieser Standort wurde zu deinen Lesezeichen hinzugefügt. Lesezeichen-Standorte können schnell von der Startseite aus aufgerufen werden."
37845+
}
37846+
},
37847+
"es" : {
37848+
"stringUnit" : {
37849+
"state" : "translated",
37850+
"value" : "Esta ubicación ha sido añadida a tus favoritos. Las ubicaciones marcadas se pueden acceder rápidamente desde la página de inicio."
37851+
}
37852+
},
37853+
"it" : {
37854+
"stringUnit" : {
37855+
"state" : "translated",
37856+
"value" : "Questa posizione è stata aggiunta ai tuoi segnalibri. Le posizioni con segnalibro possono essere rapidamente accessibili dalla pagina iniziale."
37857+
}
37858+
},
37859+
"ja" : {
37860+
"stringUnit" : {
37861+
"state" : "translated",
37862+
"value" : "この場所がブックマークに追加されました。ブックマークした場所はスタートページから素早くアクセスできます。"
37863+
}
37864+
},
37865+
"nl" : {
37866+
"stringUnit" : {
37867+
"state" : "translated",
37868+
"value" : "Deze locatie is aan je bladwijzers toegevoegd. Bladwijzerlocaties kunnen snel worden geopend vanaf de startpagina."
37869+
}
37870+
},
37871+
"uk" : {
37872+
"stringUnit" : {
37873+
"state" : "translated",
37874+
"value" : "Це місце було додано до ваших закладок. Доступ до закладених місць можна швидко отримати з початкової сторінки."
37875+
}
37876+
},
37877+
"zh-Hans" : {
37878+
"stringUnit" : {
37879+
"state" : "translated",
37880+
"value" : "此位置已添加到您的书签中。可以从起始页快速访问书签位置。"
37881+
}
37882+
}
37883+
}
37884+
},
3770137885
"This page could not be found" : {
3770237886
"localizations" : {
3770337887
"de" : {

Sushitrain/AppState.swift

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,13 @@ class SushitrainDelegate: NSObject {
109109

110110
// Whether to show the onboarding on the next startup, regardless of whether it has been shown before
111111
@AppStorage("forceOnboardingOnNextStartup") var forceOnboardingOnNextStartup = false
112+
113+
// Bookmarked places in the app
114+
@AppStorage("bookmarkedRoutes") var bookmarkedRoutes: [URL] = []
112115

113116
#if os(iOS)
114117
// Whether to re-enable hideHiddenFolders when app comes to the foreground
115118
@AppStorage("rehideHiddenFoldersOnActivate") var rehideHiddenFoldersOnActivate: Bool = false
116-
117-
// Bookmarked places in the app
118-
@AppStorage("bookmarkedRoutes") var bookmarkedRoutes: [URL] = []
119119
#endif
120120

121121
#if os(macOS)
@@ -747,13 +747,11 @@ struct SyncState {
747747
#endif
748748
}
749749

750-
#if os(iOS)
751-
private var bookmarkedRoutesAsRoute: [Route] {
752-
return self.userSettings.bookmarkedRoutes.compactMap { url in
753-
return Route(url: url)
754-
}
750+
var bookmarkedRoutesAsRoute: [Route] {
751+
return self.userSettings.bookmarkedRoutes.compactMap { url in
752+
return Route(url: url)
755753
}
756-
#endif
754+
}
757755

758756
func sleep() async {
759757
self.stopNetworkMonitor()

Sushitrain/BrowserView.swift

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ struct BrowserView: View {
8989
@State private var showAlert: ShowAlert? = nil
9090
@State private var showConfirmable: ConfirmableAction? = nil
9191
@State private var isWorking = false
92+
@State private var isBookmarked = false
93+
@State private var showNewBookmarkInfo = false
9294

9395
#if os(macOS)
9496
@State private var showIgnores = false
@@ -98,7 +100,6 @@ struct BrowserView: View {
98100

99101
#if os(iOS)
100102
@State private var showFolderStatistics = false
101-
@State private var isBookmarked = false
102103
#endif
103104

104105
private func currentViewStyle() -> Binding<BrowserViewStyle> {
@@ -210,6 +211,17 @@ struct BrowserView: View {
210211
}
211212
}
212213
#endif
214+
215+
#if os(macOS)
216+
.alert("This location has been added to your bookmarks. Bookmarked locations can be accessed quickly from the start page.", isPresented: $showNewBookmarkInfo) {
217+
Button("OK") {}
218+
}
219+
#else
220+
.alert("This location has been added to your bookmarks. Bookmarked locations can be accessed quickly from the start page, or by long-tapping the app icon om the home screen.", isPresented: $showNewBookmarkInfo) {
221+
Button("OK") {}
222+
}
223+
#endif
224+
213225
.task {
214226
self.update()
215227
}
@@ -418,12 +430,10 @@ struct BrowserView: View {
418430
self.folderIsSelective = folderExists && folder.isSelective()
419431

420432
// Determine whether this view is bookmarked
421-
#if os(iOS)
422-
let route = self.route
423-
self.isBookmarked = userSettings.bookmarkedRoutes.contains(where: {
424-
Route(url: $0) == route
425-
})
426-
#endif
433+
let route = self.route
434+
self.isBookmarked = userSettings.bookmarkedRoutes.contains(where: {
435+
Route(url: $0) == route
436+
})
427437

428438
// Check for presence of index.html to enable web view
429439
if folderExists, let entry = try? folder.getFileInformation(self.prefix + "index.html"),
@@ -555,13 +565,11 @@ struct BrowserView: View {
555565
}
556566
}
557567

558-
#if os(iOS)
559-
if !isReceiveEncrypted {
560-
Toggle(isOn: Binding(get: { self.isBookmarked }, set: { self.setBookmarked($0) })) {
561-
Label("Bookmark", systemImage: self.isBookmarked ? "bookmark.fill" : "bookmark")
562-
}
568+
if !isReceiveEncrypted {
569+
Toggle(isOn: Binding(get: { self.isBookmarked }, set: { self.setBookmarked($0) })) {
570+
Label("Bookmark", systemImage: self.isBookmarked ? "bookmark.fill" : "bookmark")
563571
}
564-
#endif
572+
}
565573

566574
Divider()
567575

@@ -599,25 +607,27 @@ struct BrowserView: View {
599607
return Route.folder(folderID: self.folder.folderID, prefix: self.prefix)
600608
}
601609

602-
#if os(iOS)
603-
private func setBookmarked(_ fav: Bool) {
604-
let newRoute = self.route
610+
private func setBookmarked(_ fav: Bool) {
611+
let newRoute = self.route
605612

606-
userSettings.bookmarkedRoutes.removeAll(where: { bookmarkedURL in
607-
guard let bookmarkedRoute = Route(url: bookmarkedURL) else {
608-
return true
609-
}
613+
userSettings.bookmarkedRoutes.removeAll(where: { bookmarkedURL in
614+
guard let bookmarkedRoute = Route(url: bookmarkedURL) else {
615+
return true
616+
}
610617

611-
return bookmarkedRoute == newRoute
612-
})
618+
return bookmarkedRoute == newRoute
619+
})
613620

614-
if fav {
615-
userSettings.bookmarkedRoutes.append(newRoute.url)
616-
}
617-
Log.info("New bookmarks: \(userSettings.bookmarkedRoutes)")
618-
self.update()
621+
if fav {
622+
userSettings.bookmarkedRoutes.append(newRoute.url)
619623
}
620-
#endif
624+
Log.info("New bookmarks: \(userSettings.bookmarkedRoutes)")
625+
self.update()
626+
627+
if fav {
628+
self.showNewBookmarkInfo = true
629+
}
630+
}
621631

622632
private func confirmedAction() {
623633
do {

0 commit comments

Comments
 (0)