collapse long posts (#1037) close #914

* collapse long posts

* initialize user pref setting in init(), remove onAppear and onChange(pref) from view

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
This commit is contained in:
Peter-Josef Meisch 2023-02-26 17:32:09 +01:00 committed by GitHub
parent bd782abb88
commit 3a144b7792
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 146 additions and 14 deletions

View file

@ -43,19 +43,28 @@ struct ContentSettingsView: View {
} }
} }
Section("settings.content.reading") { Section {
Toggle(isOn: $userPreferences.appAutoExpandSpoilers) { Toggle(isOn: $userPreferences.appAutoExpandSpoilers) {
Text("settings.content.expand-spoilers") Text("settings.content.expand-spoilers")
} }
.disabled(userPreferences.useInstanceContentSettings) .disabled(userPreferences.useInstanceContentSettings)
Picker("settings.content.expand-media", selection: $userPreferences.appAutoExpandMedia) { Picker("settings.content.expand-media", selection: $userPreferences.appAutoExpandMedia) {
ForEach(ServerPreferences.AutoExpandMedia.allCases, id: \.rawValue) { media in ForEach(ServerPreferences.AutoExpandMedia.allCases, id: \.rawValue) { media in
Text(media.description).tag(media) Text(media.description).tag(media)
} }
} }
.disabled(userPreferences.useInstanceContentSettings) .disabled(userPreferences.useInstanceContentSettings)
}.listRowBackground(theme.primaryBackgroundColor)
Toggle(isOn: $userPreferences.collapseLongPosts) {
Text("settings.content.collapse-long-posts")
}
} header: {
Text("settings.content.reading")
} footer: {
Text("settings.content.collapse-long-posts-hint")
}
.listRowBackground(theme.primaryBackgroundColor)
Section("settings.content.posting") { Section("settings.content.posting") {
Picker("settings.content.default-visibility", selection: $userPreferences.appDefaultPostVisibility) { Picker("settings.content.default-visibility", selection: $userPreferences.appDefaultPostVisibility) {

View file

@ -112,6 +112,8 @@
"settings.system" = "Сістэмныя налады"; "settings.system" = "Сістэмныя налады";
"settings.content.navigation-title" = "Налады змесціву"; "settings.content.navigation-title" = "Налады змесціву";
"settings.content.boosts" = "Павышэння"; "settings.content.boosts" = "Павышэння";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Схаваць паўторныя павышэння"; "settings.content.hide-repeated-boosts" = "Схаваць паўторныя павышэння";
"settings.content.instance-settings" = "Налады змесціва серверу"; "settings.content.instance-settings" = "Налады змесціва серверу";
"settings.content.use-instance-settings" = "Ужыць налады серверу"; "settings.content.use-instance-settings" = "Ужыць налады серверу";
@ -462,6 +464,7 @@
"status.row.you-boosted" = "Вы ўзмацнілі"; "status.row.you-boosted" = "Вы ўзмацнілі";
"status.show-less" = "Паказваць менш"; "status.show-less" = "Паказваць менш";
"status.show-more" = "Паказаць больш"; "status.show-more" = "Паказаць больш";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " а "; "status.summary.at-time" = " а ";
"status.summary.edited-time" = "Апошняе рэдагаванне:"; "status.summary.edited-time" = "Апошняе рэдагаванне:";
"status.summary.n-boosts %lld" = "%lld павышаных"; "status.summary.n-boosts %lld" = "%lld павышаных";

View file

@ -108,6 +108,8 @@
"settings.content.navigation-title" = "Configuració del contacte"; "settings.content.navigation-title" = "Configuració del contacte";
"settings.content.use-instance-settings" = "Utilitza la configuració del servidor"; "settings.content.use-instance-settings" = "Utilitza la configuració del servidor";
"settings.content.boosts" = "Impulsos"; "settings.content.boosts" = "Impulsos";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Hide repeated boosts"; "settings.content.hide-repeated-boosts" = "Hide repeated boosts";
"settings.content.instance-settings" = "Server Content Settings"; "settings.content.instance-settings" = "Server Content Settings";
"settings.content.expand-spoilers" = "Mostra'm sempre els espòilers"; "settings.content.expand-spoilers" = "Mostra'm sempre els espòilers";
@ -456,6 +458,7 @@
"status.row.you-boosted" = "Heu impulsat"; "status.row.you-boosted" = "Heu impulsat";
"status.show-less" = "Mostra'n menys"; "status.show-less" = "Mostra'n menys";
"status.show-more" = "Mostra'n més"; "status.show-more" = "Mostra'n més";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " a les "; "status.summary.at-time" = " a les ";
"status.summary.edited-time" = "Darrera edició: "; "status.summary.edited-time" = "Darrera edició: ";
"status.summary.n-boosts %lld" = "%lld impulsos"; "status.summary.n-boosts %lld" = "%lld impulsos";

View file

@ -132,6 +132,8 @@
"settings.system" = "Systemeinstellungen"; "settings.system" = "Systemeinstellungen";
"settings.content.navigation-title" = "Inhaltseinstellungen"; "settings.content.navigation-title" = "Inhaltseinstellungen";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Wiederholte Boosts verstecken"; "settings.content.hide-repeated-boosts" = "Wiederholte Boosts verstecken";
"settings.content.instance-settings" = "Serverinhaltseinstellungen"; "settings.content.instance-settings" = "Serverinhaltseinstellungen";
"settings.content.use-instance-settings" = "Servereinstellungen verwenden"; "settings.content.use-instance-settings" = "Servereinstellungen verwenden";
@ -453,6 +455,7 @@
"status.row.you-boosted" = "Du hast geboostet"; "status.row.you-boosted" = "Du hast geboostet";
"status.show-less" = "Weniger anzeigen"; "status.show-less" = "Weniger anzeigen";
"status.show-more" = "Mehr anzeigen"; "status.show-more" = "Mehr anzeigen";
"status.show-full-post" = "Ganzen Beitrag anzeigen";
"status.summary.at-time" = " um "; "status.summary.at-time" = " um ";
"status.summary.n-boosts %lld" = "%lld Boosts"; "status.summary.n-boosts %lld" = "%lld Boosts";
"status.summary.n-favorites %lld" = "%lld Favoriten"; "status.summary.n-favorites %lld" = "%lld Favoriten";

View file

@ -111,6 +111,8 @@
"settings.general.content" = "Content Settings"; "settings.general.content" = "Content Settings";
"settings.system" = "System Settings"; "settings.system" = "System Settings";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.navigation-title" = "Content Settings"; "settings.content.navigation-title" = "Content Settings";
"settings.content.use-instance-settings" = "Use Server Settings"; "settings.content.use-instance-settings" = "Use Server Settings";
"settings.content.instance-settings" = "Server Content Settings"; "settings.content.instance-settings" = "Server Content Settings";
@ -457,6 +459,7 @@
"status.row.you-boosted" = "You boosted"; "status.row.you-boosted" = "You boosted";
"status.show-less" = "Show less"; "status.show-less" = "Show less";
"status.show-more" = "Show more"; "status.show-more" = "Show more";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " at "; "status.summary.at-time" = " at ";
"status.summary.edited-time" = "Last edited: "; "status.summary.edited-time" = "Last edited: ";
"status.summary.n-boosts %lld" = "%lld boosts"; "status.summary.n-boosts %lld" = "%lld boosts";

View file

@ -112,6 +112,8 @@
"settings.system" = "System Settings"; "settings.system" = "System Settings";
"settings.content.navigation-title" = "Content Settings"; "settings.content.navigation-title" = "Content Settings";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Hide Repeated Boosts"; "settings.content.hide-repeated-boosts" = "Hide Repeated Boosts";
"settings.content.instance-settings" = "Server Content Settings"; "settings.content.instance-settings" = "Server Content Settings";
"settings.content.use-instance-settings" = "Use Server Settings"; "settings.content.use-instance-settings" = "Use Server Settings";
@ -458,6 +460,7 @@
"status.row.you-boosted" = "You boosted"; "status.row.you-boosted" = "You boosted";
"status.show-less" = "Show less"; "status.show-less" = "Show less";
"status.show-more" = "Show more"; "status.show-more" = "Show more";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " at "; "status.summary.at-time" = " at ";
"status.summary.edited-time" = "Last edited: "; "status.summary.edited-time" = "Last edited: ";
"status.summary.n-boosts %lld" = "%lld boosts"; "status.summary.n-boosts %lld" = "%lld boosts";

View file

@ -132,6 +132,8 @@
"settings.system" = "Ajustes del sistema"; "settings.system" = "Ajustes del sistema";
"settings.content.navigation-title" = "Ajustes de contenido"; "settings.content.navigation-title" = "Ajustes de contenido";
"settings.content.boosts" = "Retoots"; "settings.content.boosts" = "Retoots";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Ocultar retoots repetidos"; "settings.content.hide-repeated-boosts" = "Ocultar retoots repetidos";
"settings.content.instance-settings" = "Ajustes de contenido del servidor"; "settings.content.instance-settings" = "Ajustes de contenido del servidor";
"settings.content.use-instance-settings" = "Usar ajustes del servidor"; "settings.content.use-instance-settings" = "Usar ajustes del servidor";
@ -458,6 +460,7 @@
"status.row.you-boosted" = "Retooteaste"; "status.row.you-boosted" = "Retooteaste";
"status.show-less" = "Mostrar menos"; "status.show-less" = "Mostrar menos";
"status.show-more" = "Mostrar más"; "status.show-more" = "Mostrar más";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " a las "; "status.summary.at-time" = " a las ";
"status.summary.edited-time" = "Última edición: "; "status.summary.edited-time" = "Última edición: ";
"status.summary.n-boosts %lld" = "%lld retoots"; "status.summary.n-boosts %lld" = "%lld retoots";

View file

@ -132,6 +132,8 @@
"settings.system" = "Sistemaren ezarpenak"; "settings.system" = "Sistemaren ezarpenak";
"settings.content.navigation-title" = "Edukiaren ezarpenak"; "settings.content.navigation-title" = "Edukiaren ezarpenak";
"settings.content.boosts" = "Bultzadak"; "settings.content.boosts" = "Bultzadak";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Ezkutatu errepikatutako bultzadak"; "settings.content.hide-repeated-boosts" = "Ezkutatu errepikatutako bultzadak";
"settings.content.instance-settings" = "Edukiari buruzko ezarpenak"; "settings.content.instance-settings" = "Edukiari buruzko ezarpenak";
"settings.content.use-instance-settings" = "Erabili zerbitzariko ezarpenak"; "settings.content.use-instance-settings" = "Erabili zerbitzariko ezarpenak";
@ -450,6 +452,7 @@
"status.row.you-boosted" = "Zuk bultzatua"; "status.row.you-boosted" = "Zuk bultzatua";
"status.show-less" = "Ikusi gutxiago"; "status.show-less" = "Ikusi gutxiago";
"status.show-more" = "Ikusi gehiago"; "status.show-more" = "Ikusi gehiago";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " · "; "status.summary.at-time" = " · ";
"status.summary.edited-time" = "Azkenekoz editatua: "; "status.summary.edited-time" = "Azkenekoz editatua: ";
"status.visibility.direct" = "Aipatutakoak"; "status.visibility.direct" = "Aipatutakoak";

View file

@ -108,6 +108,8 @@
"settings.system" = "Paramètres système"; "settings.system" = "Paramètres système";
"settings.content.navigation-title" = "Paramètres de contenu"; "settings.content.navigation-title" = "Paramètres de contenu";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Masquer les boosts répétés"; "settings.content.hide-repeated-boosts" = "Masquer les boosts répétés";
"settings.content.instance-settings" = "Réglages de contenu serveur"; "settings.content.instance-settings" = "Réglages de contenu serveur";
"settings.content.use-instance-settings" = "Utiliser les paramètres du serveur"; "settings.content.use-instance-settings" = "Utiliser les paramètres du serveur";
@ -453,6 +455,7 @@
"status.row.you-boosted" = "Vous avez boosté"; "status.row.you-boosted" = "Vous avez boosté";
"status.show-less" = "Afficher moins"; "status.show-less" = "Afficher moins";
"status.show-more" = "Afficher plus"; "status.show-more" = "Afficher plus";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " à "; "status.summary.at-time" = " à ";
"status.summary.edited-time" = "Dernière modification : "; "status.summary.edited-time" = "Dernière modification : ";
"status.summary.n-boosts %lld" = "%lld boosts"; "status.summary.n-boosts %lld" = "%lld boosts";

View file

@ -133,6 +133,8 @@
"settings.content.navigation-title" = "Impostazioni dei contenuti"; "settings.content.navigation-title" = "Impostazioni dei contenuti";
"settings.content.use-instance-settings" = "Utilizza le impostazioni del server"; "settings.content.use-instance-settings" = "Utilizza le impostazioni del server";
"settings.content.boosts" = "Condivisioni"; "settings.content.boosts" = "Condivisioni";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Nascondi le condivisioni ripetute"; "settings.content.hide-repeated-boosts" = "Nascondi le condivisioni ripetute";
"settings.content.instance-settings" = "Configurazione dei contenuti del Server"; "settings.content.instance-settings" = "Configurazione dei contenuti del Server";
"settings.content.expand-spoilers" = "Visualizza sempre i contenuti sensibili"; "settings.content.expand-spoilers" = "Visualizza sempre i contenuti sensibili";
@ -458,6 +460,7 @@
"status.row.you-boosted" = "Tu hai condiviso"; "status.row.you-boosted" = "Tu hai condiviso";
"status.show-less" = "Mostra meno"; "status.show-less" = "Mostra meno";
"status.show-more" = "Mostra di più"; "status.show-more" = "Mostra di più";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " alle "; "status.summary.at-time" = " alle ";
"status.summary.edited-time" = "Ultima modifica: "; "status.summary.edited-time" = "Ultima modifica: ";
"status.summary.n-boosts %lld" = "%lld condivisioni"; "status.summary.n-boosts %lld" = "%lld condivisioni";

View file

@ -112,6 +112,8 @@
"settings.system" = "システム設定"; "settings.system" = "システム設定";
"settings.content.navigation-title" = "コンテンツ設定"; "settings.content.navigation-title" = "コンテンツ設定";
"settings.content.boosts" = "ブースト"; "settings.content.boosts" = "ブースト";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "度重なるブーストを隠す"; "settings.content.hide-repeated-boosts" = "度重なるブーストを隠す";
"settings.content.instance-settings" = "サーバーコンテンツ設定"; "settings.content.instance-settings" = "サーバーコンテンツ設定";
"settings.content.use-instance-settings" = "サーバー設定を使用する"; "settings.content.use-instance-settings" = "サーバー設定を使用する";
@ -457,6 +459,7 @@
"status.row.you-boosted" = "ブーストしました"; "status.row.you-boosted" = "ブーストしました";
"status.show-less" = "表示項目を減らす"; "status.show-less" = "表示項目を減らす";
"status.show-more" = "表示項目を増やす"; "status.show-more" = "表示項目を増やす";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " at "; "status.summary.at-time" = " at ";
"status.summary.edited-time" = "最新編集日: "; "status.summary.edited-time" = "最新編集日: ";
"status.summary.n-boosts %lld" = "%lld ブースト"; "status.summary.n-boosts %lld" = "%lld ブースト";

View file

@ -108,6 +108,8 @@
"settings.system" = "시스템 설정"; "settings.system" = "시스템 설정";
"settings.content.navigation-title" = "콘텐츠 설정"; "settings.content.navigation-title" = "콘텐츠 설정";
"settings.content.boosts" = "부스트"; "settings.content.boosts" = "부스트";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "중복으로 부스트된 글 숨기기"; "settings.content.hide-repeated-boosts" = "중복으로 부스트된 글 숨기기";
"settings.content.instance-settings" = "인스턴스 콘텐츠 설정"; "settings.content.instance-settings" = "인스턴스 콘텐츠 설정";
"settings.content.use-instance-settings" = "인스턴스 설정에 맞추기"; "settings.content.use-instance-settings" = "인스턴스 설정에 맞추기";
@ -459,6 +461,7 @@
"status.row.you-boosted" = "내가 부스트함"; "status.row.you-boosted" = "내가 부스트함";
"status.show-less" = "간략히 보기"; "status.show-less" = "간략히 보기";
"status.show-more" = "더 보기"; "status.show-more" = "더 보기";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " "; "status.summary.at-time" = " ";
"status.summary.edited-time" = "마지막 수정: "; "status.summary.edited-time" = "마지막 수정: ";
"status.summary.n-boosts %lld" = "부스트 %lld회"; "status.summary.n-boosts %lld" = "부스트 %lld회";

View file

@ -112,6 +112,8 @@
"settings.system" = "Systeminnstillinger"; "settings.system" = "Systeminnstillinger";
"settings.content.navigation-title" = "Innholdsinnstillinger"; "settings.content.navigation-title" = "Innholdsinnstillinger";
"settings.content.boosts" = "Forsterkninger"; "settings.content.boosts" = "Forsterkninger";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Hide repeated boosts"; "settings.content.hide-repeated-boosts" = "Hide repeated boosts";
"settings.content.instance-settings" = "Server Content Settings"; "settings.content.instance-settings" = "Server Content Settings";
"settings.content.use-instance-settings" = "Bruk serverinnstillinger"; "settings.content.use-instance-settings" = "Bruk serverinnstillinger";
@ -457,6 +459,7 @@
"status.row.you-boosted" = "Du forsterket"; "status.row.you-boosted" = "Du forsterket";
"status.show-less" = "Vis mindre"; "status.show-less" = "Vis mindre";
"status.show-more" = "Vis mer"; "status.show-more" = "Vis mer";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = "kl "; "status.summary.at-time" = "kl ";
"status.summary.edited-time" = "Sist redigert: "; "status.summary.edited-time" = "Sist redigert: ";
"status.summary.n-boosts %lld" = "%lld forsterkninger"; "status.summary.n-boosts %lld" = "%lld forsterkninger";

View file

@ -132,6 +132,8 @@
"settings.system" = "Systeeminstellingen"; "settings.system" = "Systeeminstellingen";
"settings.content.navigation-title" = "Inhoud"; "settings.content.navigation-title" = "Inhoud";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Verberg herhaalde boosts"; "settings.content.hide-repeated-boosts" = "Verberg herhaalde boosts";
"settings.content.instance-settings" = "Serverinstellingen voor inhoud"; "settings.content.instance-settings" = "Serverinstellingen voor inhoud";
"settings.content.use-instance-settings" = "Gebruik serverinstellingen"; "settings.content.use-instance-settings" = "Gebruik serverinstellingen";
@ -451,6 +453,7 @@
"status.row.you-boosted" = "Je boostte"; "status.row.you-boosted" = "Je boostte";
"status.show-less" = "Toon minder"; "status.show-less" = "Toon minder";
"status.show-more" = "Toon meer"; "status.show-more" = "Toon meer";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " om "; "status.summary.at-time" = " om ";
"status.summary.edited-time" = "Laatst gewijzigd: "; "status.summary.edited-time" = "Laatst gewijzigd: ";
"status.summary.n-boosts %lld" = "%lld boosts"; "status.summary.n-boosts %lld" = "%lld boosts";

View file

@ -108,6 +108,8 @@
"settings.system" = "Ustawienia systemowe"; "settings.system" = "Ustawienia systemowe";
"settings.content.navigation-title" = "Ustawienia treści"; "settings.content.navigation-title" = "Ustawienia treści";
"settings.content.boosts" = "Podbicia"; "settings.content.boosts" = "Podbicia";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Ukryj powtórzone podbicia"; "settings.content.hide-repeated-boosts" = "Ukryj powtórzone podbicia";
"settings.content.instance-settings" = "Ustawienia treści serwera"; "settings.content.instance-settings" = "Ustawienia treści serwera";
"settings.content.use-instance-settings" = "Zastosuj ustawienia serwera"; "settings.content.use-instance-settings" = "Zastosuj ustawienia serwera";
@ -451,6 +453,7 @@
"status.row.you-boosted" = "Podbiłeś(aś)"; "status.row.you-boosted" = "Podbiłeś(aś)";
"status.show-less" = "Pokaż mniej"; "status.show-less" = "Pokaż mniej";
"status.show-more" = "Pokaż więcej"; "status.show-more" = "Pokaż więcej";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " o "; "status.summary.at-time" = " o ";
"status.summary.edited-time" = "Ostatnia edycja: "; "status.summary.edited-time" = "Ostatnia edycja: ";
"status.visibility.direct" = "Post bezpośredni"; "status.visibility.direct" = "Post bezpośredni";

View file

@ -108,6 +108,8 @@
"settings.system" = "Ajustes do Sistema"; "settings.system" = "Ajustes do Sistema";
"settings.content.navigation-title" = "Configurações de Conteúdo"; "settings.content.navigation-title" = "Configurações de Conteúdo";
"settings.content.boosts" = "Boosts"; "settings.content.boosts" = "Boosts";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "Ocultar boosts repetidos"; "settings.content.hide-repeated-boosts" = "Ocultar boosts repetidos";
"settings.content.instance-settings" = "Configurações de conteúdo do servidor"; "settings.content.instance-settings" = "Configurações de conteúdo do servidor";
"settings.content.use-instance-settings" = "Usar configurações do servidor"; "settings.content.use-instance-settings" = "Usar configurações do servidor";
@ -457,6 +459,7 @@
"status.row.you-boosted" = "Você deu boost"; "status.row.you-boosted" = "Você deu boost";
"status.show-less" = "Exibir menos"; "status.show-less" = "Exibir menos";
"status.show-more" = "Exibir mais"; "status.show-more" = "Exibir mais";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " as "; "status.summary.at-time" = " as ";
"status.summary.edited-time" = "Última edição: "; "status.summary.edited-time" = "Última edição: ";
"status.summary.n-boosts %lld" = "%lld boosts"; "status.summary.n-boosts %lld" = "%lld boosts";

View file

@ -107,6 +107,8 @@
"settings.general.content" = "Content Settings"; "settings.general.content" = "Content Settings";
"settings.system" = "System Settings"; "settings.system" = "System Settings";
"settings.content.navigation-title" = "Content Settings"; "settings.content.navigation-title" = "Content Settings";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.boosts" = "Yükseltmeler"; "settings.content.boosts" = "Yükseltmeler";
"settings.content.hide-repeated-boosts" = "Hide repeated boosts"; "settings.content.hide-repeated-boosts" = "Hide repeated boosts";
"settings.content.instance-settings" = "Server Content Settings"; "settings.content.instance-settings" = "Server Content Settings";
@ -453,6 +455,7 @@
"status.row.you-boosted" = "Yükselttin"; "status.row.you-boosted" = "Yükselttin";
"status.show-less" = "Daha az göster"; "status.show-less" = "Daha az göster";
"status.show-more" = "Daha fazla göster"; "status.show-more" = "Daha fazla göster";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " de "; "status.summary.at-time" = " de ";
"status.summary.edited-time" = "Son düzenleme: "; "status.summary.edited-time" = "Son düzenleme: ";
"status.summary.n-boosts %lld" = "%lld yükseltmeler"; "status.summary.n-boosts %lld" = "%lld yükseltmeler";

View file

@ -111,6 +111,8 @@
"settings.general.content" = "Налаштування вмісту"; "settings.general.content" = "Налаштування вмісту";
"settings.system" = "Системні налаштування"; "settings.system" = "Системні налаштування";
"settings.content.navigation-title" = "Налаштування вмісту"; "settings.content.navigation-title" = "Налаштування вмісту";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.boosts" = "Поширення"; "settings.content.boosts" = "Поширення";
"settings.content.hide-repeated-boosts" = "Не відображати повторні поширення"; "settings.content.hide-repeated-boosts" = "Не відображати повторні поширення";
"settings.content.instance-settings" = "Налаштування відображення сервера"; "settings.content.instance-settings" = "Налаштування відображення сервера";
@ -458,6 +460,7 @@
"status.row.you-boosted" = "Ви поширили"; "status.row.you-boosted" = "Ви поширили";
"status.show-less" = "Показати менше"; "status.show-less" = "Показати менше";
"status.show-more" = "Показати більше"; "status.show-more" = "Показати більше";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " о "; "status.summary.at-time" = " о ";
"status.summary.edited-time" = "Востаннє змінено: "; "status.summary.edited-time" = "Востаннє змінено: ";
"status.summary.n-boosts %lld" = "%lld поширень"; "status.summary.n-boosts %lld" = "%lld поширень";

View file

@ -133,6 +133,8 @@
"settings.system" = "系统设置"; "settings.system" = "系统设置";
"settings.content.navigation-title" = "内容设置"; "settings.content.navigation-title" = "内容设置";
"settings.content.boosts" = "转发"; "settings.content.boosts" = "转发";
"settings.content.collapse-long-posts" = "Collapse long posts";
"settings.content.collapse-long-posts-hint" = "Collapsed posts only display a limited number of lines together with a button to show the full post";
"settings.content.hide-repeated-boosts" = "隐藏重复的转发"; "settings.content.hide-repeated-boosts" = "隐藏重复的转发";
"settings.content.instance-settings" = "服务器内容设置"; "settings.content.instance-settings" = "服务器内容设置";
"settings.content.use-instance-settings" = "使用服务器设置"; "settings.content.use-instance-settings" = "使用服务器设置";
@ -456,6 +458,7 @@
"status.row.you-boosted" = "你转发了"; "status.row.you-boosted" = "你转发了";
"status.show-less" = "显示更少"; "status.show-less" = "显示更少";
"status.show-more" = "显示更多"; "status.show-more" = "显示更多";
"status.show-full-post" = "Show full post";
"status.summary.at-time" = " 在 "; "status.summary.at-time" = " 在 ";
"status.summary.edited-time" = "上次编辑:"; "status.summary.edited-time" = "上次编辑:";
"status.summary.n-boosts %lld" = "%lld 转发"; "status.summary.n-boosts %lld" = "%lld 转发";

View file

@ -8,11 +8,13 @@ public struct EmojiTextApp: View {
private let emojis: [any CustomEmoji] private let emojis: [any CustomEmoji]
private let language: String? private let language: String?
private let append: (() -> Text)? private let append: (() -> Text)?
private let lineLimit: Int?
public init(_ markdown: HTMLString, emojis: [Emoji], language: String? = nil, append: (() -> Text)? = nil) { public init(_ markdown: HTMLString, emojis: [Emoji], language: String? = nil, lineLimit: Int? = nil, append: (() -> Text)? = nil) {
self.markdown = markdown self.markdown = markdown
self.emojis = emojis.map { RemoteEmoji(shortcode: $0.shortcode, url: $0.url) } self.emojis = emojis.map { RemoteEmoji(shortcode: $0.shortcode, url: $0.url) }
self.language = language self.language = language
self.lineLimit = lineLimit
self.append = append self.append = append
} }
@ -22,11 +24,14 @@ public struct EmojiTextApp: View {
.append { .append {
append() append()
} }
.lineLimit(lineLimit)
} else if emojis.isEmpty { } else if emojis.isEmpty {
Text(markdown.asSafeMarkdownAttributedString) Text(markdown.asSafeMarkdownAttributedString)
.lineLimit(lineLimit)
.environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight) .environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight)
} else { } else {
EmojiText(markdown: markdown.asMarkdown, emojis: emojis) EmojiText(markdown: markdown.asMarkdown, emojis: emojis)
.lineLimit(lineLimit)
.environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight) .environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight)
} }
} }

View file

@ -47,6 +47,8 @@ public class UserPreferences: ObservableObject {
@AppStorage("swipeactions-icon-style") public var swipeActionsIconStyle: SwipeActionsIconStyle = .iconWithText @AppStorage("swipeactions-icon-style") public var swipeActionsIconStyle: SwipeActionsIconStyle = .iconWithText
@AppStorage("requested_review") public var requestedReview = false @AppStorage("requested_review") public var requestedReview = false
@AppStorage("collapse-long-posts") public var collapseLongPosts = true
public enum SwipeActionsIconStyle: String, CaseIterable { public enum SwipeActionsIconStyle: String, CaseIterable {
case iconWithText, iconOnly case iconWithText, iconOnly

View file

@ -37,6 +37,31 @@ public class StatusRowViewModel: ObservableObject {
@Published var localStatusId: String? @Published var localStatusId: String?
@Published var localStatus: Status? @Published var localStatus: Status?
// used by the button to expand a collapsed post
@Published var isCollapsed: Bool = true {
didSet {
recalcCollapse()
}
}
// number of lines to show, nil means show the whole post
@Published var lineLimit: Int? = nil
// post length determining if the post should be collapsed
let collapseThresholdLength : Int = 750
// number of text lines to show on a collpased post
let collapsedLines: Int = 8
// user preference, set in init
var collapseLongPosts: Bool = false
private func recalcCollapse() {
let hasContentWarning = !status.spoilerText.asRawText.isEmpty
let showCollapseButton = collapseLongPosts && isCollapsed && !hasContentWarning
&& (status.reblog?.content ?? status.content).asRawText.unicodeScalars.count > collapseThresholdLength
let newlineLimit = showCollapseButton && isCollapsed ? collapsedLines : nil
if newlineLimit != lineLimit {
lineLimit = newlineLimit
}
}
private let theme = Theme.shared private let theme = Theme.shared
private let userMentionned: Bool private let userMentionned: Bool
@ -112,6 +137,9 @@ public class StatusRowViewModel: ObservableObject {
isEmbedLoading = false isEmbedLoading = false
embeddedStatus = embed embeddedStatus = embed
} }
collapseLongPosts = UserPreferences.shared.collapseLongPosts
recalcCollapse()
} }
func markSeen() { func markSeen() {

View file

@ -29,6 +29,7 @@ struct StatusRowSpoilerView: View {
.accessibility(label: displaySpoiler ? Text("status.show-more") : Text("status.show-less")) .accessibility(label: displaySpoiler ? Text("status.show-more") : Text("status.show-less"))
.accessibilityHidden(true) .accessibilityHidden(true)
} }
.contentShape(Rectangle())
.onTapGesture { // make whole row tapable to make up for smaller button size .onTapGesture { // make whole row tapable to make up for smaller button size
withAnimation { withAnimation {
displaySpoiler.toggle() displaySpoiler.toggle()

View file

@ -1,22 +1,55 @@
import DesignSystem import DesignSystem
import Env
import Models import Models
import SwiftUI import SwiftUI
struct StatusRowTextView: View { struct StatusRowTextView: View {
@EnvironmentObject private var theme: Theme @EnvironmentObject private var theme: Theme
@EnvironmentObject private var preferences: UserPreferences
let status: AnyStatus let status: AnyStatus
let viewModel: StatusRowViewModel @ObservedObject var viewModel: StatusRowViewModel
var body: some View { var body: some View {
HStack { VStack {
EmojiTextApp(status.content, emojis: status.emojis, language: status.language) HStack {
.font(.scaledBody) EmojiTextApp(status.content, emojis: status.emojis, language: status.language, lineLimit: viewModel.lineLimit)
.emojiSize(Font.scaledBodyPointSize) .font(.scaledBody)
.environment(\.openURL, OpenURLAction { url in .emojiSize(Font.scaledBodyPointSize)
viewModel.routerPath.handleStatus(status: status, url: url) .environment(\.openURL, OpenURLAction { url in
}) viewModel.routerPath.handleStatus(status: status, url: url)
Spacer() })
Spacer()
}
makeCollapseButton()
}
}
@ViewBuilder
func makeCollapseButton() -> some View {
if let _ = viewModel.lineLimit {
HStack(alignment: .top) {
Text("status.show-full-post")
.font(.system(.subheadline, weight: .bold))
.foregroundColor(.secondary)
Spacer()
Button {
withAnimation {
viewModel.isCollapsed.toggle()
}
} label: {
Image(systemName: "chevron.down")
}
.buttonStyle(.bordered)
.accessibility(label: Text("status.show-full-post"))
.accessibilityHidden(true)
}
.contentShape(Rectangle())
.onTapGesture { // make whole row tapable to make up for smaller button size
withAnimation {
viewModel.isCollapsed.toggle()
}
}
} }
} }
} }