Edit tag groups
This commit is contained in:
parent
559e1d0c83
commit
4280764733
|
@ -106,7 +106,7 @@
|
||||||
E9DF420129830FEC0003AAD2 /* ActionRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DF420029830FEC0003AAD2 /* ActionRequestHandler.swift */; };
|
E9DF420129830FEC0003AAD2 /* ActionRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DF420029830FEC0003AAD2 /* ActionRequestHandler.swift */; };
|
||||||
E9DF420329830FEC0003AAD2 /* Action.js in Resources */ = {isa = PBXBuildFile; fileRef = E9DF420229830FEC0003AAD2 /* Action.js */; };
|
E9DF420329830FEC0003AAD2 /* Action.js in Resources */ = {isa = PBXBuildFile; fileRef = E9DF420229830FEC0003AAD2 /* Action.js */; };
|
||||||
E9DF420729830FEC0003AAD2 /* IceCubesActionExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E9DF41FA29830FEC0003AAD2 /* IceCubesActionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
E9DF420729830FEC0003AAD2 /* IceCubesActionExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E9DF41FA29830FEC0003AAD2 /* IceCubesActionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
FA31A9AB2A66BF7C00D5F662 /* AddTagGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA31A9AA2A66BF7C00D5F662 /* AddTagGroupView.swift */; };
|
FA31A9AB2A66BF7C00D5F662 /* EditTagGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA31A9AA2A66BF7C00D5F662 /* EditTagGroupView.swift */; };
|
||||||
FAD203D02A66D8A80030A7FD /* Symbols.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD203CF2A66D8A80030A7FD /* Symbols.swift */; };
|
FAD203D02A66D8A80030A7FD /* Symbols.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD203CF2A66D8A80030A7FD /* Symbols.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@
|
||||||
E9DF420229830FEC0003AAD2 /* Action.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = Action.js; sourceTree = "<group>"; };
|
E9DF420229830FEC0003AAD2 /* Action.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = Action.js; sourceTree = "<group>"; };
|
||||||
E9DF420429830FEC0003AAD2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
E9DF420429830FEC0003AAD2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
F355EEDA297A8BD500E362C0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
F355EEDA297A8BD500E362C0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
FA31A9AA2A66BF7C00D5F662 /* AddTagGroupView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddTagGroupView.swift; sourceTree = "<group>"; };
|
FA31A9AA2A66BF7C00D5F662 /* EditTagGroupView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditTagGroupView.swift; sourceTree = "<group>"; };
|
||||||
FAD203CF2A66D8A80030A7FD /* Symbols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Symbols.swift; sourceTree = "<group>"; };
|
FAD203CF2A66D8A80030A7FD /* Symbols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Symbols.swift; sourceTree = "<group>"; };
|
||||||
FF8259FB298E42E000BEAB69 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
|
FF8259FB298E42E000BEAB69 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
FF8259FC298E42E000BEAB69 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
FF8259FC298E42E000BEAB69 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
@ -407,7 +407,7 @@
|
||||||
children = (
|
children = (
|
||||||
9F398AB229360A4C00A889F2 /* TimelineTab.swift */,
|
9F398AB229360A4C00A889F2 /* TimelineTab.swift */,
|
||||||
9F7335F12967608F00AFF0BA /* AddRemoteTimelineView.swift */,
|
9F7335F12967608F00AFF0BA /* AddRemoteTimelineView.swift */,
|
||||||
FA31A9AA2A66BF7C00D5F662 /* AddTagGroupView.swift */,
|
FA31A9AA2A66BF7C00D5F662 /* EditTagGroupView.swift */,
|
||||||
FAD203CF2A66D8A80030A7FD /* Symbols.swift */,
|
FAD203CF2A66D8A80030A7FD /* Symbols.swift */,
|
||||||
);
|
);
|
||||||
path = Timeline;
|
path = Timeline;
|
||||||
|
@ -839,7 +839,7 @@
|
||||||
9F7335F92968576500AFF0BA /* DisplaySettingsView.swift in Sources */,
|
9F7335F92968576500AFF0BA /* DisplaySettingsView.swift in Sources */,
|
||||||
9F2A540729699698009B2D7C /* SupportAppView.swift in Sources */,
|
9F2A540729699698009B2D7C /* SupportAppView.swift in Sources */,
|
||||||
9F2B92F6295AE04800DE16D0 /* Tabs.swift in Sources */,
|
9F2B92F6295AE04800DE16D0 /* Tabs.swift in Sources */,
|
||||||
FA31A9AB2A66BF7C00D5F662 /* AddTagGroupView.swift in Sources */,
|
FA31A9AB2A66BF7C00D5F662 /* EditTagGroupView.swift in Sources */,
|
||||||
FAD203D02A66D8A80030A7FD /* Symbols.swift in Sources */,
|
FAD203D02A66D8A80030A7FD /* Symbols.swift in Sources */,
|
||||||
9F398AB329360A4C00A889F2 /* TimelineTab.swift in Sources */,
|
9F398AB329360A4C00A889F2 /* TimelineTab.swift in Sources */,
|
||||||
9F398AA62935FE8A00A889F2 /* AppRouter.swift in Sources */,
|
9F398AA62935FE8A00A889F2 /* AppRouter.swift in Sources */,
|
||||||
|
|
|
@ -83,7 +83,7 @@ extension View {
|
||||||
AddRemoteTimelineView()
|
AddRemoteTimelineView()
|
||||||
.withEnvironments()
|
.withEnvironments()
|
||||||
case .addTagGroup:
|
case .addTagGroup:
|
||||||
AddTagGroupView()
|
EditTagGroupView()
|
||||||
.withEnvironments()
|
.withEnvironments()
|
||||||
case let .statusEditHistory(status):
|
case let .statusEditHistory(status):
|
||||||
StatusEditHistoryView(statusId: status)
|
StatusEditHistoryView(statusId: status)
|
||||||
|
@ -104,6 +104,9 @@ extension View {
|
||||||
.withEnvironments()
|
.withEnvironments()
|
||||||
case let .shareImage(image, status):
|
case let .shareImage(image, status):
|
||||||
ActivityView(image: image, status: status)
|
ActivityView(image: image, status: status)
|
||||||
|
case let .editTagGroup(tagGroup, onSaved):
|
||||||
|
EditTagGroupView(editingTagGroup: tagGroup, onSaved: onSaved)
|
||||||
|
.withEnvironments()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,6 +269,9 @@ struct SettingsTabs: View {
|
||||||
Form {
|
Form {
|
||||||
ForEach(preferences.tagGroups, id: \.self) { group in
|
ForEach(preferences.tagGroups, id: \.self) { group in
|
||||||
Label(group.title, systemImage: group.sfSymbolName)
|
Label(group.title, systemImage: group.sfSymbolName)
|
||||||
|
.onTapGesture {
|
||||||
|
routerPath.presentedSheet = .editTagGroup(tagGroup: group, onSaved: nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.onDelete { indexes in
|
.onDelete { indexes in
|
||||||
if let index = indexes.first {
|
if let index = indexes.first {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import NukeUI
|
||||||
import Shimmer
|
import Shimmer
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct AddTagGroupView: View {
|
struct EditTagGroupView: View {
|
||||||
@Environment(\.dismiss) private var dismiss
|
@Environment(\.dismiss) private var dismiss
|
||||||
|
|
||||||
@EnvironmentObject private var preferences: UserPreferences
|
@EnvironmentObject private var preferences: UserPreferences
|
||||||
|
@ -19,6 +19,9 @@ struct AddTagGroupView: View {
|
||||||
@State private var newTag: String = ""
|
@State private var newTag: String = ""
|
||||||
@State private var popupTagsPresented = false
|
@State private var popupTagsPresented = false
|
||||||
|
|
||||||
|
private var editingTagGroup: TagGroup?
|
||||||
|
private var onSaved: ((TagGroup) -> Void)?
|
||||||
|
|
||||||
private var canSave: Bool {
|
private var canSave: Bool {
|
||||||
!title.isEmpty &&
|
!title.isEmpty &&
|
||||||
// At least have 2 tags, one main and one additional.
|
// At least have 2 tags, one main and one additional.
|
||||||
|
@ -32,6 +35,11 @@ struct AddTagGroupView: View {
|
||||||
case symbol
|
case symbol
|
||||||
case new
|
case new
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init(editingTagGroup: TagGroup? = nil, onSaved: ((TagGroup) -> Void)? = nil) {
|
||||||
|
self.editingTagGroup = editingTagGroup
|
||||||
|
self.onSaved = onSaved
|
||||||
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
|
@ -41,7 +49,7 @@ struct AddTagGroupView: View {
|
||||||
keywordsSection
|
keywordsSection
|
||||||
}
|
}
|
||||||
.formStyle(.grouped)
|
.formStyle(.grouped)
|
||||||
.navigationTitle("timeline.filter.add-tag-groups")
|
.navigationTitle(editingTagGroup != nil ? "timeline.filter.edit-tag-groups" : "timeline.filter.add-tag-groups")
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
.scrollContentBackground(.hidden)
|
.scrollContentBackground(.hidden)
|
||||||
.background(theme.secondaryBackgroundColor)
|
.background(theme.secondaryBackgroundColor)
|
||||||
|
@ -59,6 +67,11 @@ struct AddTagGroupView: View {
|
||||||
}
|
}
|
||||||
.onAppear {
|
.onAppear {
|
||||||
focusedField = .title
|
focusedField = .title
|
||||||
|
if let editingTagGroup {
|
||||||
|
title = editingTagGroup.title
|
||||||
|
sfSymbolName = editingTagGroup.sfSymbolName
|
||||||
|
tags = editingTagGroup.tags
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,14 +163,22 @@ struct AddTagGroupView: View {
|
||||||
private func save() {
|
private func save() {
|
||||||
var toSave = tags
|
var toSave = tags
|
||||||
let main = toSave.removeFirst()
|
let main = toSave.removeFirst()
|
||||||
preferences.tagGroups.append(.init(
|
|
||||||
|
let tagGroup: TagGroup = .init(
|
||||||
title: title.trimmingCharacters(in: .whitespaces),
|
title: title.trimmingCharacters(in: .whitespaces),
|
||||||
sfSymbolName: sfSymbolName,
|
sfSymbolName: sfSymbolName,
|
||||||
main: main,
|
main: main,
|
||||||
additional: toSave
|
additional: toSave
|
||||||
))
|
)
|
||||||
|
if let editingTagGroup,
|
||||||
|
let index = preferences.tagGroups.firstIndex(of: editingTagGroup) {
|
||||||
|
preferences.tagGroups[index] = tagGroup
|
||||||
|
} else {
|
||||||
|
preferences.tagGroups.append(tagGroup)
|
||||||
|
}
|
||||||
|
|
||||||
dismiss()
|
dismiss()
|
||||||
|
onSaved?(tagGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
|
@ -189,7 +210,7 @@ struct AddTagGroupView: View {
|
||||||
|
|
||||||
struct AddTagGroupView_Previews: PreviewProvider {
|
struct AddTagGroupView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
AddTagGroupView()
|
EditTagGroupView()
|
||||||
.withEnvironments()
|
.withEnvironments()
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -248,6 +248,7 @@
|
||||||
"timeline.filter.tags" = "Адсочваемыя тэгі";
|
"timeline.filter.tags" = "Адсочваемыя тэгі";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Дадаць уліковы запіс";
|
"app-account.button.add" = "Дадаць уліковы запіс";
|
||||||
|
|
|
@ -242,6 +242,7 @@
|
||||||
"timeline.filter.tags" = "Etiquetes seguides";
|
"timeline.filter.tags" = "Etiquetes seguides";
|
||||||
"timeline.filter.tag-groups" = "Grups d'Etiquetes";
|
"timeline.filter.tag-groups" = "Grups d'Etiquetes";
|
||||||
"timeline.filter.add-tag-groups" = "Afegeix grup";
|
"timeline.filter.add-tag-groups" = "Afegeix grup";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Afegeix un compte";
|
"app-account.button.add" = "Afegeix un compte";
|
||||||
|
|
|
@ -245,6 +245,7 @@
|
||||||
"timeline.filter.tags" = "Gefolgte Hashtags";
|
"timeline.filter.tags" = "Gefolgte Hashtags";
|
||||||
"timeline.filter.tag-groups" = "Taggruppen";
|
"timeline.filter.tag-groups" = "Taggruppen";
|
||||||
"timeline.filter.add-tag-groups" = "Taggruppe hinzufügen";
|
"timeline.filter.add-tag-groups" = "Taggruppe hinzufügen";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Konto hinzufügen";
|
"app-account.button.add" = "Konto hinzufügen";
|
||||||
|
|
|
@ -246,6 +246,7 @@
|
||||||
"timeline.filter.tags" = "Followed Tags";
|
"timeline.filter.tags" = "Followed Tags";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Add Account";
|
"app-account.button.add" = "Add Account";
|
||||||
|
|
|
@ -244,6 +244,7 @@
|
||||||
"timeline.filter.tags" = "Followed Tags";
|
"timeline.filter.tags" = "Followed Tags";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Add Account";
|
"app-account.button.add" = "Add Account";
|
||||||
|
|
|
@ -244,6 +244,7 @@
|
||||||
"timeline.filter.tags" = "Etiquetas que sigues";
|
"timeline.filter.tags" = "Etiquetas que sigues";
|
||||||
"timeline.filter.tag-groups" = "Grupos de Etiquetas";
|
"timeline.filter.tag-groups" = "Grupos de Etiquetas";
|
||||||
"timeline.filter.add-tag-groups" = "Añadir grupo";
|
"timeline.filter.add-tag-groups" = "Añadir grupo";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Añadir cuenta";
|
"app-account.button.add" = "Añadir cuenta";
|
||||||
|
|
|
@ -245,6 +245,7 @@
|
||||||
"timeline.filter.tags" = "Jarraitutako traolak";
|
"timeline.filter.tags" = "Jarraitutako traolak";
|
||||||
"timeline.filter.tag-groups" = "Traola-sortak";
|
"timeline.filter.tag-groups" = "Traola-sortak";
|
||||||
"timeline.filter.add-tag-groups" = "Gehitu traola-sorta";
|
"timeline.filter.add-tag-groups" = "Gehitu traola-sorta";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Gehitu kontua";
|
"app-account.button.add" = "Gehitu kontua";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "Tags suivis";
|
"timeline.filter.tags" = "Tags suivis";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Ajouter un compte";
|
"app-account.button.add" = "Ajouter un compte";
|
||||||
|
|
|
@ -242,6 +242,7 @@
|
||||||
"timeline.filter.tags" = "Tag seguiti";
|
"timeline.filter.tags" = "Tag seguiti";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Aggiungi account";
|
"app-account.button.add" = "Aggiungi account";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "フォローしたタグ";
|
"timeline.filter.tags" = "フォローしたタグ";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "アカウントの追加";
|
"app-account.button.add" = "アカウントの追加";
|
||||||
|
|
|
@ -244,6 +244,7 @@
|
||||||
"timeline-new-posts %lld" = "%lld개 새 글";
|
"timeline-new-posts %lld" = "%lld개 새 글";
|
||||||
"timeline.filter.tag-groups" = "태그 모음";
|
"timeline.filter.tag-groups" = "태그 모음";
|
||||||
"timeline.filter.add-tag-groups" = "태그 모음 추가";
|
"timeline.filter.add-tag-groups" = "태그 모음 추가";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "계정 추가";
|
"app-account.button.add" = "계정 추가";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "Fulgte tagger";
|
"timeline.filter.tags" = "Fulgte tagger";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Legg til konto";
|
"app-account.button.add" = "Legg til konto";
|
||||||
|
|
|
@ -240,6 +240,7 @@
|
||||||
"timeline.filter.tags" = "Gevolgde hashtags";
|
"timeline.filter.tags" = "Gevolgde hashtags";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Account toevoegen";
|
"app-account.button.add" = "Account toevoegen";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "Obserwowane hasztagi";
|
"timeline.filter.tags" = "Obserwowane hasztagi";
|
||||||
"timeline.filter.tag-groups" = "Grupy hasztagów";
|
"timeline.filter.tag-groups" = "Grupy hasztagów";
|
||||||
"timeline.filter.add-tag-groups" = "Dodaj grupę hasztagów";
|
"timeline.filter.add-tag-groups" = "Dodaj grupę hasztagów";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Dodaj konto";
|
"app-account.button.add" = "Dodaj konto";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "Hashtags Seguidas";
|
"timeline.filter.tags" = "Hashtags Seguidas";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Adicionar Conta";
|
"app-account.button.add" = "Adicionar Conta";
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
"timeline.filter.tags" = "Takip Edilen Etiketler";
|
"timeline.filter.tags" = "Takip Edilen Etiketler";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Hesap Ekle";
|
"app-account.button.add" = "Hesap Ekle";
|
||||||
|
|
|
@ -244,6 +244,7 @@
|
||||||
"timeline.filter.tags" = "Хештеґи";
|
"timeline.filter.tags" = "Хештеґи";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "Додати обліковий запис";
|
"app-account.button.add" = "Додати обліковий запис";
|
||||||
|
|
|
@ -241,6 +241,7 @@
|
||||||
"timeline.filter.tags" = "关注的标签";
|
"timeline.filter.tags" = "关注的标签";
|
||||||
"timeline.filter.tag-groups" = "标签组";
|
"timeline.filter.tag-groups" = "标签组";
|
||||||
"timeline.filter.add-tag-groups" = "新建标签组";
|
"timeline.filter.add-tag-groups" = "新建标签组";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "添加账户";
|
"app-account.button.add" = "添加账户";
|
||||||
|
|
|
@ -245,6 +245,7 @@
|
||||||
"timeline.filter.tags" = "跟隨標籤";
|
"timeline.filter.tags" = "跟隨標籤";
|
||||||
"timeline.filter.tag-groups" = "Tag Groups";
|
"timeline.filter.tag-groups" = "Tag Groups";
|
||||||
"timeline.filter.add-tag-groups" = "Add tag group";
|
"timeline.filter.add-tag-groups" = "Add tag group";
|
||||||
|
"timeline.filter.edit-tag-groups" = "Edit tag group";
|
||||||
|
|
||||||
// MARK: Package: AppAccount
|
// MARK: Package: AppAccount
|
||||||
"app-account.button.add" = "新增帳號";
|
"app-account.button.add" = "新增帳號";
|
||||||
|
|
|
@ -39,6 +39,7 @@ public enum SheetDestination: Identifiable {
|
||||||
case accountPushNotficationsSettings
|
case accountPushNotficationsSettings
|
||||||
case report(status: Status)
|
case report(status: Status)
|
||||||
case shareImage(image: UIImage, status: Status)
|
case shareImage(image: UIImage, status: Status)
|
||||||
|
case editTagGroup(tagGroup: TagGroup, onSaved: ((TagGroup) -> Void)?)
|
||||||
|
|
||||||
public var id: String {
|
public var id: String {
|
||||||
switch self {
|
switch self {
|
||||||
|
@ -61,6 +62,8 @@ public enum SheetDestination: Identifiable {
|
||||||
return "report"
|
return "report"
|
||||||
case .shareImage:
|
case .shareImage:
|
||||||
return "shareImage"
|
return "shareImage"
|
||||||
|
case .editTagGroup:
|
||||||
|
return "editTagGroup"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,20 +212,28 @@ public struct TimelineView: View {
|
||||||
private var tagGroupHeaderView: some View {
|
private var tagGroupHeaderView: some View {
|
||||||
if let group = viewModel.tagGroup {
|
if let group = viewModel.tagGroup {
|
||||||
headerView {
|
headerView {
|
||||||
ScrollView(.horizontal) {
|
HStack {
|
||||||
HStack(spacing: 4) {
|
ScrollView(.horizontal) {
|
||||||
ForEach(group.tags, id: \.self) { tag in
|
HStack(spacing: 4) {
|
||||||
Button {
|
ForEach(group.tags, id: \.self) { tag in
|
||||||
routerPath.navigate(to: .hashTag(tag: tag, account: nil))
|
Button {
|
||||||
} label: {
|
routerPath.navigate(to: .hashTag(tag: tag, account: nil))
|
||||||
Text("#\(tag)")
|
} label: {
|
||||||
.font(.scaledHeadline)
|
Text("#\(tag)")
|
||||||
|
.font(.scaledHeadline)
|
||||||
|
}
|
||||||
|
.buttonStyle(.plain)
|
||||||
}
|
}
|
||||||
.buttonStyle(.plain)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.scrollIndicators(.hidden)
|
||||||
|
Button("status.action.edit") {
|
||||||
|
routerPath.presentedSheet = .editTagGroup(tagGroup: group, onSaved: { group in
|
||||||
|
viewModel.timeline = .tagGroup(group)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
.buttonStyle(.bordered)
|
||||||
}
|
}
|
||||||
.scrollIndicators(.hidden)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue