Merge branch 'main' into develop
|
@ -17,6 +17,6 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.4.5</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>143</string>
|
||||
<string>144</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
"common": {
|
||||
"alerts": {
|
||||
"common": {
|
||||
"please_try_again": "يُرجى المُحاولة مرة أُخرى.",
|
||||
"please_try_again": "يُرجى المُحاوَلَةُ مُجَدَّدًا.",
|
||||
"please_try_again_later": "يُرجى المُحاولة مرة أُخرى لاحقًا."
|
||||
},
|
||||
"sign_up_failure": {
|
||||
"title": "إخفاق في التسجيل"
|
||||
"title": "إخفاقٌ فِي التَّسجيل"
|
||||
},
|
||||
"server_error": {
|
||||
"title": "خطأ في الخادم"
|
||||
"title": "خَطَأٌ فِي الخادِم"
|
||||
},
|
||||
"vote_failure": {
|
||||
"title": "إخفاق في التصويت",
|
||||
"poll_ended": "انتهى استطلاع الرأي"
|
||||
"title": "إخفاقٌ فِي التَّصويت",
|
||||
"poll_ended": "اِنتَهَى اِستِطلاعُ الرَّأي"
|
||||
},
|
||||
"discard_post_content": {
|
||||
"title": "التخلص من المسودة",
|
||||
|
@ -216,26 +216,26 @@
|
|||
"subtitle_extend": "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. تُشغَّل جميعُ المجتمعِ مِن قِبَلِ مُنظمَةٍ أو فردٍ مُستقلٍ تمامًا.",
|
||||
"button": {
|
||||
"category": {
|
||||
"all": "الكل",
|
||||
"all_accessiblity_description": "الفئة: الكل",
|
||||
"all": "الكُل",
|
||||
"all_accessiblity_description": "الفِئَة: الكُل",
|
||||
"academia": "أكاديمي",
|
||||
"activism": "النشطاء",
|
||||
"food": "الطعام",
|
||||
"furry": "مكسو بالفرو",
|
||||
"games": "ألعاب",
|
||||
"general": "عام",
|
||||
"journalism": "صحافة",
|
||||
"lgbt": "مجتمع الشواذ",
|
||||
"activism": "نُشَطاء",
|
||||
"food": "طَعام",
|
||||
"furry": "مَكسُوٌ بِالفَرو",
|
||||
"games": "ألعَاب",
|
||||
"general": "عَام",
|
||||
"journalism": "صَحافة",
|
||||
"lgbt": "مَخَانِيث",
|
||||
"regional": "إقليمي",
|
||||
"art": "فنون",
|
||||
"music": "موسيقى",
|
||||
"tech": "تقنية"
|
||||
"art": "فُنون",
|
||||
"music": "مُوسيقى",
|
||||
"tech": "تَقنِيَة"
|
||||
},
|
||||
"see_less": "عرض عناصر أقل",
|
||||
"see_more": "عرض عناصر أكثر"
|
||||
"see_less": "عَرضُ عَناصِرٍ أقَل",
|
||||
"see_more": "عَرضُ عَناصِرٍ أكثَر"
|
||||
},
|
||||
"label": {
|
||||
"language": "اللُّغة",
|
||||
"language": "اللُّغَة",
|
||||
"users": "مُستَخدِم",
|
||||
"category": "الفئة"
|
||||
},
|
||||
|
@ -286,8 +286,8 @@
|
|||
"email": "البريد الإلكتروني",
|
||||
"password": "الرمز السري",
|
||||
"agreement": "الاِتِّفاقيَّة",
|
||||
"locale": "اللغة المحلية",
|
||||
"reason": "السبب"
|
||||
"locale": "اللُّغَة",
|
||||
"reason": "السَّبَب"
|
||||
},
|
||||
"reason": {
|
||||
"blocked": "يحتوي %s على موفِّر خدمة بريد إلكتروني غير مسموح به",
|
||||
|
@ -297,14 +297,14 @@
|
|||
"accepted": "يجب أن يُقبل %s",
|
||||
"blank": "%s مَطلوب",
|
||||
"invalid": "%s غير صالح",
|
||||
"too_long": "%s طويل جداً",
|
||||
"too_short": "%s قصير جدًا",
|
||||
"too_long": "%s طَويلٌ جِدًّا",
|
||||
"too_short": "%s قَصِيرٌ جِدًا",
|
||||
"inclusion": "إنَّ %s قيمة غير مدعومة"
|
||||
},
|
||||
"special": {
|
||||
"username_invalid": "يُمكِن أن يحتوي اسم المستخدم على أحرف أبجدية، أرقام وشرطات سفلية فقط",
|
||||
"username_too_long": "اِسم المُستَخدِم طويل جداً (يَجِبُ ألّا يكون أطول من ثلاثين خانة)",
|
||||
"email_invalid": "هذا عنوان بريد إلكتروني غير صالح",
|
||||
"email_invalid": "عُنوانُ البَريدِ الاِلِكتُرُونيّ هَذَا غَيرُ صَالِح",
|
||||
"password_too_short": "رمز السر قصير جدًا (يجب أن يتكون من ثمان خانات على الأقل)"
|
||||
}
|
||||
}
|
||||
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "أظْهِر الإشارَات"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "قَبُول",
|
||||
"accepted": "مَقبُول",
|
||||
"reject": "رَفض",
|
||||
"rejected": "مَرفُوض"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "Mostrar Mencions"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "Acceptar",
|
||||
"accepted": "Acceptat",
|
||||
"reject": "rebutjar",
|
||||
"rejected": "Rebutjat"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "Mostrar Menciones"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "Aceptar",
|
||||
"accepted": "Aceptado",
|
||||
"reject": "rechazar",
|
||||
"rejected": "Rechazado"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "Mostrar mencións"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "Aceptar",
|
||||
"accepted": "Aceptada",
|
||||
"reject": "rexeitar",
|
||||
"rejected": "Rexeitada"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -129,12 +129,12 @@
|
|||
"show_post": "投稿を見る",
|
||||
"show_user_profile": "プロフィールを見る",
|
||||
"content_warning": "コンテンツ警告",
|
||||
"sensitive_content": "Sensitive Content",
|
||||
"sensitive_content": "閲覧注意",
|
||||
"media_content_warning": "どこかをタップして表示",
|
||||
"tap_to_reveal": "タップして表示",
|
||||
"poll": {
|
||||
"vote": "投票",
|
||||
"closed": "クローズド"
|
||||
"closed": "終了"
|
||||
},
|
||||
"actions": {
|
||||
"reply": "返信",
|
||||
|
@ -325,7 +325,7 @@
|
|||
"tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we emailed to you to verify your account",
|
||||
"button": {
|
||||
"open_email_app": "メールアプリを開く",
|
||||
"resend": "Resend"
|
||||
"resend": "再送信"
|
||||
},
|
||||
"dont_receive_email": {
|
||||
"title": "メールをチェックしてください",
|
||||
|
@ -347,8 +347,8 @@
|
|||
"published": "投稿しました!",
|
||||
"Publishing": "投稿中...",
|
||||
"accessibility": {
|
||||
"logo_label": "Logo Button",
|
||||
"logo_hint": "Tap to scroll to top and tap again to previous location"
|
||||
"logo_label": "ロゴボタン",
|
||||
"logo_hint": "タップすると一番上までスクロールし、もう一度タップすると元の場所に戻ります"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -418,7 +418,7 @@
|
|||
},
|
||||
"profile": {
|
||||
"header": {
|
||||
"follows_you": "Follows You"
|
||||
"follows_you": "フォローされています"
|
||||
},
|
||||
"dashboard": {
|
||||
"posts": "投稿",
|
||||
|
@ -441,20 +441,20 @@
|
|||
},
|
||||
"relationship_action_alert": {
|
||||
"confirm_mute_user": {
|
||||
"title": "Mute Account",
|
||||
"message": "Confirm to mute %s"
|
||||
"title": "アカウントをミュート",
|
||||
"message": "%sをミュートしますか?"
|
||||
},
|
||||
"confirm_unmute_user": {
|
||||
"title": "ミュートを解除",
|
||||
"message": "%sをミュートしますか?"
|
||||
},
|
||||
"confirm_block_user": {
|
||||
"title": "Block Account",
|
||||
"message": "Confirm to block %s"
|
||||
"title": "アカウントをブロック",
|
||||
"message": "%sをブロックしますか?"
|
||||
},
|
||||
"confirm_unblock_user": {
|
||||
"title": "Unblock Account",
|
||||
"message": "Confirm to unblock %s"
|
||||
"title": "アカウントのブロックを解除",
|
||||
"message": "%sのブロックを解除しますか?"
|
||||
}
|
||||
},
|
||||
"accessibility": {
|
||||
|
@ -465,11 +465,11 @@
|
|||
}
|
||||
},
|
||||
"follower": {
|
||||
"title": "follower",
|
||||
"title": "フォロワー",
|
||||
"footer": "他のサーバーからのフォロワーは表示されません。"
|
||||
},
|
||||
"following": {
|
||||
"title": "following",
|
||||
"title": "フォロー",
|
||||
"footer": "他のサーバーにいるフォローは表示されません。"
|
||||
},
|
||||
"familiarFollowers": {
|
||||
|
@ -534,22 +534,22 @@
|
|||
"Mentions": "メンション"
|
||||
},
|
||||
"notification_description": {
|
||||
"followed_you": "さんにフォローされました",
|
||||
"favorited_your_post": "さんがあなたの投稿をお気に入りに登録しました",
|
||||
"reblogged_your_post": "さんがあなたの投稿をブーストしました",
|
||||
"mentioned_you": "さんがあなたに返信しました",
|
||||
"request_to_follow_you": "さんがあなたにフォローリクエストしました",
|
||||
"poll_has_ended": "アンケートが終了しました"
|
||||
"followed_you": "にフォローされました",
|
||||
"favorited_your_post": "がお気に入りに登録",
|
||||
"reblogged_your_post": "がブースト",
|
||||
"mentioned_you": "にメンションされました",
|
||||
"request_to_follow_you": "からのフォローリクエスト",
|
||||
"poll_has_ended": "のアンケートが終了"
|
||||
},
|
||||
"keyobard": {
|
||||
"show_everything": "すべて見る",
|
||||
"show_mentions": "メンションを見る"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "承認",
|
||||
"accepted": "承諾済み",
|
||||
"reject": "拒否",
|
||||
"rejected": "拒否済み"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "Show Mentions"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "수락",
|
||||
"accepted": "수락됨",
|
||||
"reject": "거절",
|
||||
"rejected": "거절됨"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "Hiện lượt nhắc"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "Chấp nhận",
|
||||
"accepted": "Đã chấp nhận",
|
||||
"reject": "từ chối",
|
||||
"rejected": "Đã từ chối"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -546,10 +546,10 @@
|
|||
"show_mentions": "顯示提及"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
"accept": "接受",
|
||||
"accepted": "已接受",
|
||||
"reject": "拒絕",
|
||||
"rejected": "已拒絕"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
|
|
|
@ -4850,7 +4850,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -4880,7 +4880,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -4988,11 +4988,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 143;
|
||||
DYLIB_CURRENT_VERSION = 144;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5019,11 +5019,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 143;
|
||||
DYLIB_CURRENT_VERSION = 144;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5114,7 +5114,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -5182,11 +5182,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 143;
|
||||
DYLIB_CURRENT_VERSION = 144;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5211,7 +5211,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5234,7 +5234,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5258,7 +5258,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5282,7 +5282,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5306,7 +5306,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5330,7 +5330,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5354,7 +5354,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5441,7 +5441,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -5508,11 +5508,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 143;
|
||||
DYLIB_CURRENT_VERSION = 144;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5536,7 +5536,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5559,7 +5559,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5583,7 +5583,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5607,7 +5607,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5630,7 +5630,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 143;
|
||||
CURRENT_PROJECT_VERSION = 144;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<key>isShown</key>
|
||||
<true/>
|
||||
<key>orderHint</key>
|
||||
<integer>8</integer>
|
||||
<integer>9</integer>
|
||||
</dict>
|
||||
<key>CoreDataStack.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<key>Mastodon - Profile.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>Mastodon - RTL.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -29,17 +29,17 @@
|
|||
<key>Mastodon - Release.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>4</integer>
|
||||
<integer>5</integer>
|
||||
</dict>
|
||||
<key>Mastodon - Snapshot.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>6</integer>
|
||||
<integer>7</integer>
|
||||
</dict>
|
||||
<key>Mastodon - ar.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>7</integer>
|
||||
<integer>8</integer>
|
||||
</dict>
|
||||
<key>Mastodon - ar.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -114,7 +114,7 @@
|
|||
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>35</integer>
|
||||
<integer>29</integer>
|
||||
</dict>
|
||||
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -129,12 +129,12 @@
|
|||
<key>NotificationService.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>36</integer>
|
||||
<integer>31</integer>
|
||||
</dict>
|
||||
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>37</integer>
|
||||
<integer>30</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
|
|
|
@ -496,7 +496,7 @@ private extension SceneCoordinator {
|
|||
}
|
||||
let _viewController = SFSafariViewController(url: url)
|
||||
_viewController.preferredBarTintColor = ThemeService.shared.currentTheme.value.navigationBarBackgroundColor
|
||||
_viewController.preferredControlTintColor = Asset.Colors.brandBlue.color
|
||||
_viewController.preferredControlTintColor = Asset.Colors.brand.color
|
||||
viewController = _viewController
|
||||
|
||||
case .alertController(let alertController):
|
||||
|
|
|
@ -17,7 +17,7 @@ extension Mastodon.Entity.Notification.NotificationType {
|
|||
var color: UIColor
|
||||
switch self {
|
||||
case .follow:
|
||||
color = Asset.Colors.brandBlue.color
|
||||
color = Asset.Colors.brand.color
|
||||
case .favourite:
|
||||
color = Asset.Colors.Notification.favourite.color
|
||||
case .reblog:
|
||||
|
@ -25,9 +25,9 @@ extension Mastodon.Entity.Notification.NotificationType {
|
|||
case .mention:
|
||||
color = Asset.Colors.Notification.mention.color
|
||||
case .poll:
|
||||
color = Asset.Colors.brandBlue.color
|
||||
color = Asset.Colors.brand.color
|
||||
case .followRequest:
|
||||
color = Asset.Colors.brandBlue.color
|
||||
color = Asset.Colors.brand.color
|
||||
default:
|
||||
color = .clear
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ extension UITableView {
|
|||
let backgroundColor = cell.backgroundColor
|
||||
|
||||
UIView.animate(withDuration: 0.3) {
|
||||
cell.backgroundColor = Asset.Colors.brandBlue.color.withAlphaComponent(0.5)
|
||||
cell.backgroundColor = Asset.Colors.brand.color.withAlphaComponent(0.5)
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||
UIView.animate(withDuration: 0.3) {
|
||||
cell.backgroundColor = backgroundColor
|
||||
|
|
|
@ -2,6 +2,19 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>onion</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
<key>NSIncludesSubdomains</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
@ -30,7 +43,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>143</string>
|
||||
<string>144</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
|
@ -46,19 +59,6 @@
|
|||
</array>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>onion</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
<key>NSIncludesSubdomains</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSUserActivityTypes</key>
|
||||
<array>
|
||||
<string>SendPostIntent</string>
|
||||
|
|
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 226 KiB |
|
@ -1,112 +1,190 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon_20pt@2x.png",
|
||||
"filename" : "AppIcon~iPhone-20@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_20pt@3x.png",
|
||||
"filename" : "AppIcon~iPhone-20@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_29pt@2x.png",
|
||||
"filename" : "AppIcon~iPhone-29@1x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~iPhone-29@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_29pt@3x.png",
|
||||
"filename" : "AppIcon~iPhone-29@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_40pt@2x.png",
|
||||
"filename" : "AppIcon~iPhone-40@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_40pt@3x.png",
|
||||
"filename" : "AppIcon~iPhone-40@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_60pt@2x.png",
|
||||
"filename" : "AppIcon~iPhone-57@1x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~iPhone-57@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~iPhone-60@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_60pt@3x.png",
|
||||
"filename" : "AppIcon~iPhone-60@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_20pt.png",
|
||||
"filename" : "AppIcon~iPad-20@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_20pt@2x-1.png",
|
||||
"filename" : "AppIcon~iPad-20@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_29pt.png",
|
||||
"filename" : "AppIcon~iPad-29@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_29pt@2x-1.png",
|
||||
"filename" : "AppIcon~iPad-29@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_40pt.png",
|
||||
"filename" : "AppIcon~iPad-40@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_40pt@2x-1.png",
|
||||
"filename" : "AppIcon~iPad-40@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_76pt.png",
|
||||
"filename" : "AppIcon~iPad-76@1x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_76pt@2x.png",
|
||||
"filename" : "AppIcon~iPad-76@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_83.5@2x.png",
|
||||
"filename" : "AppIcon~iPad-83.5@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "iTunesArtwork@2x.png",
|
||||
"filename" : "AppIcon~iOS-Marketing-1024@1x.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-16@1x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-16@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-32@1x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-32@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-128@1x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-128@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-256@1x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-256@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-512@1x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon~macOS-512@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
|
Before Width: | Height: | Size: 798 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 33 KiB |
|
@ -25,7 +25,7 @@ final class ComposeStatusPollExpiresOptionCollectionViewCell: UICollectionViewCe
|
|||
button.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12))
|
||||
button.expandEdgeInsets = UIEdgeInsets(top: 0, left: -10, bottom: -20, right: -20)
|
||||
button.setTitle(L10n.Scene.Compose.Poll.durationTime(L10n.Scene.Compose.Poll.thirtyMinutes), for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brand.color, for: .normal)
|
||||
return button
|
||||
}()
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ final class ComposeStatusPollOptionAppendEntryCollectionViewCell: UICollectionVi
|
|||
override var isHighlighted: Bool {
|
||||
didSet {
|
||||
pollOptionView.roundedBackgroundView.backgroundColor = isHighlighted ? ThemeService.shared.currentTheme.value.tertiarySystemGroupedBackgroundColor.withAlphaComponent(0.6) : ThemeService.shared.currentTheme.value.tertiarySystemGroupedBackgroundColor
|
||||
pollOptionView.plusCircleImageView.tintColor = isHighlighted ? Asset.Colors.brandBlue.color.withAlphaComponent(0.5) : Asset.Colors.brandBlue.color
|
||||
pollOptionView.plusCircleImageView.tintColor = isHighlighted ? Asset.Colors.brand.color.withAlphaComponent(0.5) : Asset.Colors.brand.color
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ final class ComposeStatusContentTableViewCell: UITableViewCell {
|
|||
]
|
||||
metaText.linkAttributes = [
|
||||
.font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)),
|
||||
.foregroundColor: Asset.Colors.brandBlue.color,
|
||||
.foregroundColor: Asset.Colors.brand.color,
|
||||
]
|
||||
return metaText
|
||||
}()
|
||||
|
|
|
@ -339,7 +339,7 @@ extension HomeTimelineViewController {
|
|||
let button = HighlightDimmableButton()
|
||||
button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold))
|
||||
button.setTitle(L10n.Common.Controls.Actions.manuallySearch, for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brand.color, for: .normal)
|
||||
button.addTarget(self, action: #selector(HomeTimelineViewController.manuallySearchButtonPressed(_:)), for: .touchUpInside)
|
||||
return button
|
||||
}()
|
||||
|
|
|
@ -180,136 +180,3 @@ extension HomeTimelineViewModel {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//// MARK: - NSFetchedResultsControllerDelegate
|
||||
//extension HomeTimelineViewModel: NSFetchedResultsControllerDelegate {
|
||||
//
|
||||
// func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
|
||||
// os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
// }
|
||||
//
|
||||
// func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) {
|
||||
// os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
//
|
||||
// guard let tableView = self.tableView else { return }
|
||||
// guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return }
|
||||
//
|
||||
// guard let diffableDataSource = self.diffableDataSource else { return }
|
||||
// let oldSnapshot = diffableDataSource.snapshot()
|
||||
//
|
||||
// let predicate = fetchedResultsController.fetchRequest.predicate
|
||||
// let parentManagedObjectContext = fetchedResultsController.managedObjectContext
|
||||
// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
||||
// managedObjectContext.parent = parentManagedObjectContext
|
||||
//
|
||||
// managedObjectContext.perform {
|
||||
// var shouldAddBottomLoader = false
|
||||
//
|
||||
// let timelineIndexes: [HomeTimelineIndex] = {
|
||||
// let request = HomeTimelineIndex.sortedFetchRequest
|
||||
// request.returnsObjectsAsFaults = false
|
||||
// request.predicate = predicate
|
||||
// do {
|
||||
// return try managedObjectContext.fetch(request)
|
||||
// } catch {
|
||||
// assertionFailure(error.localizedDescription)
|
||||
// return []
|
||||
// }
|
||||
// }()
|
||||
//
|
||||
// // that's will be the most fastest fetch because of upstream just update and no modify needs consider
|
||||
//
|
||||
// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:]
|
||||
//
|
||||
// for item in oldSnapshot.itemIdentifiers {
|
||||
// guard case let .homeTimelineIndex(objectID, attribute) = item else { continue }
|
||||
// oldSnapshotAttributeDict[objectID] = attribute
|
||||
// }
|
||||
//
|
||||
// var newTimelineItems: [Item] = []
|
||||
//
|
||||
// for (i, timelineIndex) in timelineIndexes.enumerated() {
|
||||
// let attribute = oldSnapshotAttributeDict[timelineIndex.objectID] ?? Item.StatusAttribute()
|
||||
// attribute.isSeparatorLineHidden = false
|
||||
//
|
||||
// // append new item into snapshot
|
||||
// newTimelineItems.append(.homeTimelineIndex(objectID: timelineIndex.objectID, attribute: attribute))
|
||||
//
|
||||
// let isLast = i == timelineIndexes.count - 1
|
||||
// switch (isLast, timelineIndex.hasMore) {
|
||||
// case (false, true):
|
||||
// newTimelineItems.append(.homeMiddleLoader(upperTimelineIndexAnchorObjectID: timelineIndex.objectID))
|
||||
// attribute.isSeparatorLineHidden = true
|
||||
// case (true, true):
|
||||
// shouldAddBottomLoader = true
|
||||
// default:
|
||||
// break
|
||||
// }
|
||||
// } // end for
|
||||
//
|
||||
// var newSnapshot = NSDiffableDataSourceSnapshot<StatusSection, Item>()
|
||||
// newSnapshot.appendSections([.main])
|
||||
// newSnapshot.appendItems(newTimelineItems, toSection: .main)
|
||||
//
|
||||
// let endSnapshot = CACurrentMediaTime()
|
||||
//
|
||||
// DispatchQueue.main.async {
|
||||
// if shouldAddBottomLoader, !(self.loadLatestStateMachine.currentState is LoadOldestState.NoMore) {
|
||||
// newSnapshot.appendItems([.bottomLoader], toSection: .main)
|
||||
// }
|
||||
//
|
||||
// guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else {
|
||||
// diffableDataSource.apply(newSnapshot)
|
||||
// self.isFetchingLatestTimeline.value = false
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// diffableDataSource.reloadData(snapshot: newSnapshot) {
|
||||
// tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false)
|
||||
// tableView.contentOffset.y = tableView.contentOffset.y - difference.offset
|
||||
// self.isFetchingLatestTimeline.value = false
|
||||
// }
|
||||
//
|
||||
// let end = CACurrentMediaTime()
|
||||
// os_log("%{public}s[%{public}ld], %{public}s: calculate home timeline layout cost %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - endSnapshot)
|
||||
// }
|
||||
// } // end perform
|
||||
// }
|
||||
//
|
||||
// private struct Difference<T> {
|
||||
// let item: T
|
||||
// let sourceIndexPath: IndexPath
|
||||
// let targetIndexPath: IndexPath
|
||||
// let offset: CGFloat
|
||||
// }
|
||||
//
|
||||
// private func calculateReloadSnapshotDifference<T: Hashable>(
|
||||
// navigationBar: UINavigationBar,
|
||||
// tableView: UITableView,
|
||||
// oldSnapshot: NSDiffableDataSourceSnapshot<StatusSection, T>,
|
||||
// newSnapshot: NSDiffableDataSourceSnapshot<StatusSection, T>
|
||||
// ) -> Difference<T>? {
|
||||
// guard oldSnapshot.numberOfItems != 0 else { return nil }
|
||||
//
|
||||
// // old snapshot not empty. set source index path to first item if not match
|
||||
// let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0)
|
||||
//
|
||||
// guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil }
|
||||
//
|
||||
// let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row]
|
||||
// guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil }
|
||||
// let targetIndexPath = IndexPath(row: itemIndex, section: 0)
|
||||
//
|
||||
// let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar)
|
||||
// return Difference(
|
||||
// item: timelineItem,
|
||||
// sourceIndexPath: sourceIndexPath,
|
||||
// targetIndexPath: targetIndexPath,
|
||||
// offset: offset
|
||||
// )
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
|
|
@ -114,7 +114,7 @@ extension HomeTimelineNavigationBarTitleView {
|
|||
configureButton(
|
||||
title: L10n.Scene.HomeTimeline.NavigationBarState.newPosts,
|
||||
textColor: .white,
|
||||
backgroundColor: Asset.Colors.brandBlue.color
|
||||
backgroundColor: Asset.Colors.brand.color
|
||||
)
|
||||
button.isHidden = false
|
||||
button.accessibilityLabel = L10n.Scene.HomeTimeline.NavigationBarState.newPosts
|
||||
|
|
|
@ -43,42 +43,6 @@ extension NotificationTimelineViewModel.Scope {
|
|||
}
|
||||
}
|
||||
|
||||
// func acceptFollowRequest(notification: MastodonNotification) {
|
||||
// guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return }
|
||||
// context.apiService.acceptFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox)
|
||||
// .sink { [weak self] completion in
|
||||
// switch completion {
|
||||
// case .failure(let error):
|
||||
// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: accept FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription)
|
||||
// case .finished:
|
||||
// break
|
||||
//// self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self)
|
||||
// }
|
||||
// } receiveValue: { _ in
|
||||
//
|
||||
// }
|
||||
// .store(in: &disposeBag)
|
||||
// }
|
||||
//
|
||||
// func rejectFollowRequest(notification: MastodonNotification) {
|
||||
// guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return }
|
||||
// context.apiService.rejectFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox)
|
||||
// .sink { [weak self] completion in
|
||||
// switch completion {
|
||||
// case .failure(let error):
|
||||
// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: reject FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription)
|
||||
// case .finished:
|
||||
// break
|
||||
//// self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self)
|
||||
// }
|
||||
// } receiveValue: { _ in
|
||||
//
|
||||
// }
|
||||
// .store(in: &disposeBag)
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
// MARK: - PageboyViewControllerDataSource
|
||||
extension NotificationViewModel: PageboyViewControllerDataSource {
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ extension PickServerCategoryView {
|
|||
highlightedIndicatorView.translatesAutoresizingMaskIntoConstraints = false
|
||||
container.addArrangedSubview(highlightedIndicatorView)
|
||||
NSLayoutConstraint.activate([
|
||||
highlightedIndicatorView.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self) * 3).priority(.required - 1),
|
||||
highlightedIndicatorView.heightAnchor.constraint(equalToConstant: 3).priority(.required - 1),
|
||||
])
|
||||
titleLabel.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||
}
|
||||
|
|
|
@ -211,7 +211,7 @@ final class ProfileHeaderView: UIView {
|
|||
]
|
||||
metaText.linkAttributes = [
|
||||
.font: UIFont.preferredFont(forTextStyle: .body),
|
||||
.foregroundColor: Asset.Colors.brandBlue.color,
|
||||
.foregroundColor: Asset.Colors.brand.color,
|
||||
]
|
||||
return metaText
|
||||
}()
|
||||
|
|
|
@ -34,7 +34,7 @@ extension SidebarAddAccountCollectionViewCell {
|
|||
|
||||
// Customize the background color to use the tint color when the cell is highlighted or selected.
|
||||
if state.isSelected || state.isHighlighted {
|
||||
newBackgroundConfiguration.backgroundColor = Asset.Colors.brandBlue.color
|
||||
newBackgroundConfiguration.backgroundColor = Asset.Colors.brand.color
|
||||
}
|
||||
if state.isHighlighted {
|
||||
newBackgroundConfiguration.backgroundColorTransformer = .init { $0.withAlphaComponent(0.8) }
|
||||
|
|
|
@ -31,7 +31,7 @@ class SearchRecommendCollectionHeader: UIView {
|
|||
|
||||
let seeAllButton: HighlightDimmableButton = {
|
||||
let button = HighlightDimmableButton(type: .custom)
|
||||
button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brand.color, for: .normal)
|
||||
button.setTitle(L10n.Scene.Search.Recommend.buttonText, for: .normal)
|
||||
button.titleLabel?.adjustsFontSizeToFitWidth = true
|
||||
button.titleLabel?.minimumScaleFactor = 0.8
|
||||
|
|
|
@ -306,7 +306,7 @@ extension SearchDetailViewController {
|
|||
|
||||
private func setupBackgroundColor(theme: Theme) {
|
||||
navigationBarBackgroundView.backgroundColor = theme.navigationBarBackgroundColor
|
||||
navigationBar.tintColor = Asset.Colors.brandBlue.color
|
||||
navigationBar.tintColor = Asset.Colors.brand.color
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ final class SearchHistoryTableHeaderView: UIView {
|
|||
let clearSearchHistoryButton: HighlightDimmableButton = {
|
||||
let button = HighlightDimmableButton(type: .custom)
|
||||
button.expandEdgeInsets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10)
|
||||
button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal)
|
||||
button.setTitleColor(Asset.Colors.brand.color, for: .normal)
|
||||
button.setTitle(L10n.Scene.Search.Searching.clear, for: .normal)
|
||||
return button
|
||||
}()
|
||||
|
|
|
@ -15,7 +15,7 @@ class NavigationBarProgressView: UIView {
|
|||
|
||||
let sliderView: UIView = {
|
||||
let view = UIView()
|
||||
view.backgroundColor = Asset.Colors.brandBlue.color
|
||||
view.backgroundColor = Asset.Colors.brand.color
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
return view
|
||||
}()
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.4.5</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>143</string>
|
||||
<string>144</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionAttributes</key>
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "55",
|
||||
"green" : "44",
|
||||
"red" : "40"
|
||||
"blue" : "0x38",
|
||||
"green" : "0x29",
|
||||
"red" : "0x2B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
|
|
|
@ -23,9 +23,9 @@
|
|||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.216",
|
||||
"green" : "0.173",
|
||||
"red" : "0.157"
|
||||
"blue" : "0x38",
|
||||
"green" : "0x29",
|
||||
"red" : "0x2B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "133",
|
||||
"green" : "112",
|
||||
"red" : "102"
|
||||
"blue" : "0x85",
|
||||
"green" : "0x66",
|
||||
"red" : "0x69"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xFF",
|
||||
"green" : "0xC2",
|
||||
"red" : "0xC2"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "0.761",
|
||||
"red" : "0.761"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.733",
|
||||
"green" : "0.110",
|
||||
"red" : "0.263"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.733",
|
||||
"green" : "0.110",
|
||||
"red" : "0.263"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"provides-namespace" : true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xBB",
|
||||
"green" : "0x1C",
|
||||
"red" : "0x43"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xFF",
|
||||
"green" : "0x99",
|
||||
"red" : "0x99"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"provides-namespace" : true
|
||||
}
|
||||
}
|
|
@ -63,6 +63,10 @@ public enum Asset {
|
|||
public enum Poll {
|
||||
public static let disabled = ColorAsset(name: "Colors/Poll/disabled")
|
||||
}
|
||||
public enum Primary {
|
||||
public static let _300 = ColorAsset(name: "Colors/Primary/300")
|
||||
public static let _700 = ColorAsset(name: "Colors/Primary/700")
|
||||
}
|
||||
public enum Shadow {
|
||||
public static let searchCard = ColorAsset(name: "Colors/Shadow/SearchCard")
|
||||
}
|
||||
|
@ -77,10 +81,13 @@ public enum Asset {
|
|||
public static let alertYellow = ColorAsset(name: "Colors/alert.yellow")
|
||||
public static let badgeBackground = ColorAsset(name: "Colors/badge.background")
|
||||
public static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey")
|
||||
public static let brandBlue = ColorAsset(name: "Colors/brand.blue")
|
||||
public static let brandBlueDarken20 = ColorAsset(name: "Colors/brand.blue.darken.20")
|
||||
public static let brand = ColorAsset(name: "Colors/brand")
|
||||
public static let dangerBorder = ColorAsset(name: "Colors/danger.border")
|
||||
public static let danger = ColorAsset(name: "Colors/danger")
|
||||
public enum Deprecated {
|
||||
public static let brandBlue = ColorAsset(name: "Colors/deprecated/brand.blue")
|
||||
public static let brandBlueDarken20 = ColorAsset(name: "Colors/deprecated/brand.blue.darken.20")
|
||||
}
|
||||
public static let disabled = ColorAsset(name: "Colors/disabled")
|
||||
public static let inactive = ColorAsset(name: "Colors/inactive")
|
||||
public static let mediaTypeIndicotor = ColorAsset(name: "Colors/media.type.indicotor")
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"Common.Alerts.BlockDomain.Title" = "هل أنتَ مُتأكِّدٌ حقًا مِن رغبتك في حظر %@ بالكامل؟ في معظم الحالات، يكون مِنَ الكافي والمُفَضَّل استهداف عدد محدود للحظر أو الكتم. لن ترى محتوى من هذا النطاق وسوف يُزال جميع متابعيك المتواجدين فيه.";
|
||||
"Common.Alerts.CleanCache.Message" = "مُحِيَ ما مَساحَتُهُ %@ مِن ذاكِرَةِ التَّخزينِ المُؤقَّت بِنجاح.";
|
||||
"Common.Alerts.CleanCache.Title" = "مَحوُ ذاكِرَةِ التَّخزينِ المُؤقَّت";
|
||||
"Common.Alerts.Common.PleaseTryAgain" = "يُرجى المُحاولة مرة أُخرى.";
|
||||
"Common.Alerts.Common.PleaseTryAgain" = "يُرجى المُحاوَلَةُ مُجَدَّدًا.";
|
||||
"Common.Alerts.Common.PleaseTryAgainLater" = "يُرجى المُحاولة مرة أُخرى لاحقًا.";
|
||||
"Common.Alerts.DeletePost.Message" = "هَل أنتَ مُتأكِدٌ مِن رَغبتِكَ فِي حَذفِ هَذَا المَنشُور؟";
|
||||
"Common.Alerts.DeletePost.Title" = "هل أنت متأكد من رغبتك في حذف هذا المنشور؟";
|
||||
|
@ -17,13 +17,13 @@
|
|||
"Common.Alerts.PublishPostFailure.Title" = "إخفاق في عمليَّة النشر";
|
||||
"Common.Alerts.SavePhotoFailure.Message" = "يُرجى إتاحة إذن الوصول إلى مكتبة الصور لحفظ الصورة.";
|
||||
"Common.Alerts.SavePhotoFailure.Title" = "إخفاق في حفظ الصورة";
|
||||
"Common.Alerts.ServerError.Title" = "خطأ في الخادم";
|
||||
"Common.Alerts.ServerError.Title" = "خَطَأٌ فِي الخادِم";
|
||||
"Common.Alerts.SignOut.Confirm" = "تَسجيلُ الخُروج";
|
||||
"Common.Alerts.SignOut.Message" = "هل أنت متأكد من رغبتك في تسجيل الخُروج؟";
|
||||
"Common.Alerts.SignOut.Title" = "تَسجيلُ الخُروج";
|
||||
"Common.Alerts.SignUpFailure.Title" = "إخفاق في التسجيل";
|
||||
"Common.Alerts.VoteFailure.PollEnded" = "انتهى استطلاع الرأي";
|
||||
"Common.Alerts.VoteFailure.Title" = "إخفاق في التصويت";
|
||||
"Common.Alerts.SignUpFailure.Title" = "إخفاقٌ فِي التَّسجيل";
|
||||
"Common.Alerts.VoteFailure.PollEnded" = "اِنتَهَى اِستِطلاعُ الرَّأي";
|
||||
"Common.Alerts.VoteFailure.Title" = "إخفاقٌ فِي التَّصويت";
|
||||
"Common.Controls.Actions.Add" = "إضافة";
|
||||
"Common.Controls.Actions.Back" = "العودة";
|
||||
"Common.Controls.Actions.BlockDomain" = "حظر %@";
|
||||
|
@ -223,10 +223,10 @@
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "تمَّ النَّشر!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "يَجري نَشر المُشارَكَة...";
|
||||
"Scene.HomeTimeline.Title" = "الرَّئِيسَة";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "قَبُول";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "مَقبُول";
|
||||
"Scene.Notification.FollowRequest.Reject" = "رَفض";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "مَرفُوض";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "أظْهِر كُلَّ شَيء";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "أظْهِر الإشارَات";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "فَضَّلَ مَنشُورَك";
|
||||
|
@ -267,9 +267,9 @@
|
|||
"Scene.RebloggedBy.Title" = "اُعيدَ تَدوينَهُ بِواسِطَةِ";
|
||||
"Scene.Register.Error.Item.Agreement" = "الاِتِّفاقيَّة";
|
||||
"Scene.Register.Error.Item.Email" = "البريد الإلكتروني";
|
||||
"Scene.Register.Error.Item.Locale" = "اللغة المحلية";
|
||||
"Scene.Register.Error.Item.Locale" = "اللُّغَة";
|
||||
"Scene.Register.Error.Item.Password" = "الرمز السري";
|
||||
"Scene.Register.Error.Item.Reason" = "السبب";
|
||||
"Scene.Register.Error.Item.Reason" = "السَّبَب";
|
||||
"Scene.Register.Error.Item.Username" = "اِسمُ المُستَخدِم";
|
||||
"Scene.Register.Error.Reason.Accepted" = "يجب أن يُقبل %@";
|
||||
"Scene.Register.Error.Reason.Blank" = "%@ مَطلوب";
|
||||
|
@ -278,10 +278,10 @@
|
|||
"Scene.Register.Error.Reason.Invalid" = "%@ غير صالح";
|
||||
"Scene.Register.Error.Reason.Reserved" = "إنَّ %@ عبارة عن كلمة مفتاحيَّة محجوزة";
|
||||
"Scene.Register.Error.Reason.Taken" = "إنَّ %@ مُستخدَمٌ بالفعل";
|
||||
"Scene.Register.Error.Reason.TooLong" = "%@ طويل جداً";
|
||||
"Scene.Register.Error.Reason.TooShort" = "%@ قصير جدًا";
|
||||
"Scene.Register.Error.Reason.TooLong" = "%@ طَويلٌ جِدًّا";
|
||||
"Scene.Register.Error.Reason.TooShort" = "%@ قَصِيرٌ جِدًا";
|
||||
"Scene.Register.Error.Reason.Unreachable" = "يبدوا أنَّ %@ غير موجود";
|
||||
"Scene.Register.Error.Special.EmailInvalid" = "هذا عنوان بريد إلكتروني غير صالح";
|
||||
"Scene.Register.Error.Special.EmailInvalid" = "عُنوانُ البَريدِ الاِلِكتُرُونيّ هَذَا غَيرُ صَالِح";
|
||||
"Scene.Register.Error.Special.PasswordTooShort" = "رمز السر قصير جدًا (يجب أن يتكون من ثمان خانات على الأقل)";
|
||||
"Scene.Register.Error.Special.UsernameInvalid" = "يُمكِن أن يحتوي اسم المستخدم على أحرف أبجدية، أرقام وشرطات سفلية فقط";
|
||||
"Scene.Register.Error.Special.UsernameTooLong" = "اِسم المُستَخدِم طويل جداً (يَجِبُ ألّا يكون أطول من ثلاثين خانة)";
|
||||
|
@ -360,28 +360,28 @@
|
|||
"Scene.Search.Searching.Segment.Posts" = "مَنشُورات";
|
||||
"Scene.Search.Title" = "البَحث";
|
||||
"Scene.ServerPicker.Button.Category.Academia" = "أكاديمي";
|
||||
"Scene.ServerPicker.Button.Category.Activism" = "النشطاء";
|
||||
"Scene.ServerPicker.Button.Category.All" = "الكل";
|
||||
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "الفئة: الكل";
|
||||
"Scene.ServerPicker.Button.Category.Art" = "فنون";
|
||||
"Scene.ServerPicker.Button.Category.Food" = "الطعام";
|
||||
"Scene.ServerPicker.Button.Category.Furry" = "مكسو بالفرو";
|
||||
"Scene.ServerPicker.Button.Category.Games" = "ألعاب";
|
||||
"Scene.ServerPicker.Button.Category.General" = "عام";
|
||||
"Scene.ServerPicker.Button.Category.Journalism" = "صحافة";
|
||||
"Scene.ServerPicker.Button.Category.Lgbt" = "مجتمع الشواذ";
|
||||
"Scene.ServerPicker.Button.Category.Music" = "موسيقى";
|
||||
"Scene.ServerPicker.Button.Category.Activism" = "نُشَطاء";
|
||||
"Scene.ServerPicker.Button.Category.All" = "الكُل";
|
||||
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "الفِئَة: الكُل";
|
||||
"Scene.ServerPicker.Button.Category.Art" = "فُنون";
|
||||
"Scene.ServerPicker.Button.Category.Food" = "طَعام";
|
||||
"Scene.ServerPicker.Button.Category.Furry" = "مَكسُوٌ بِالفَرو";
|
||||
"Scene.ServerPicker.Button.Category.Games" = "ألعَاب";
|
||||
"Scene.ServerPicker.Button.Category.General" = "عَام";
|
||||
"Scene.ServerPicker.Button.Category.Journalism" = "صَحافة";
|
||||
"Scene.ServerPicker.Button.Category.Lgbt" = "مَخَانِيث";
|
||||
"Scene.ServerPicker.Button.Category.Music" = "مُوسيقى";
|
||||
"Scene.ServerPicker.Button.Category.Regional" = "إقليمي";
|
||||
"Scene.ServerPicker.Button.Category.Tech" = "تقنية";
|
||||
"Scene.ServerPicker.Button.SeeLess" = "عرض عناصر أقل";
|
||||
"Scene.ServerPicker.Button.SeeMore" = "عرض عناصر أكثر";
|
||||
"Scene.ServerPicker.Button.Category.Tech" = "تَقنِيَة";
|
||||
"Scene.ServerPicker.Button.SeeLess" = "عَرضُ عَناصِرٍ أقَل";
|
||||
"Scene.ServerPicker.Button.SeeMore" = "عَرضُ عَناصِرٍ أكثَر";
|
||||
"Scene.ServerPicker.EmptyState.BadNetwork" = "حدث خطأٌ ما أثناء تحميل البيانات. تحقَّق من اتصالك بالإنترنت.";
|
||||
"Scene.ServerPicker.EmptyState.FindingServers" = "يجري إيجاد خوادم متوفِّرَة...";
|
||||
"Scene.ServerPicker.EmptyState.NoResults" = "لا توجد نتائج";
|
||||
"Scene.ServerPicker.Input.Placeholder" = "اِبحَث عن خادِم أو انضم إلى آخر خاص بك...";
|
||||
"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "اِبحَث فِي الخَوادِم أو أدخِل رابِط";
|
||||
"Scene.ServerPicker.Label.Category" = "الفئة";
|
||||
"Scene.ServerPicker.Label.Language" = "اللُّغة";
|
||||
"Scene.ServerPicker.Label.Language" = "اللُّغَة";
|
||||
"Scene.ServerPicker.Label.Users" = "مُستَخدِم";
|
||||
"Scene.ServerPicker.Subtitle" = "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام.";
|
||||
"Scene.ServerPicker.SubtitleExtend" = "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. تُشغَّل جميعُ المجتمعِ مِن قِبَلِ مُنظمَةٍ أو فردٍ مُستقلٍ تمامًا.";
|
||||
|
|
|
@ -223,10 +223,10 @@ carregat a Mastodon.";
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "Publicat!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "S'està publicant...";
|
||||
"Scene.HomeTimeline.Title" = "Inici";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Acceptar";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Acceptat";
|
||||
"Scene.Notification.FollowRequest.Reject" = "rebutjar";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rebutjat";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Mostrar-ho tot";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Mostrar Mencions";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "ha afavorit la teva publicació";
|
||||
|
|
|
@ -224,10 +224,10 @@ pulsa en el enlace para confirmar tu cuenta.";
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "¡Publicado!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publicación en curso...";
|
||||
"Scene.HomeTimeline.Title" = "Inicio";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Aceptar";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Aceptado";
|
||||
"Scene.Notification.FollowRequest.Reject" = "rechazar";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rechazado";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Mostrar Todo";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Mostrar Menciones";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "ha marcado como favorita tu publicación";
|
||||
|
|
|
@ -223,10 +223,10 @@ ser subido a Mastodon.";
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "Publicado!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publicando...";
|
||||
"Scene.HomeTimeline.Title" = "Inicio";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Aceptar";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Aceptada";
|
||||
"Scene.Notification.FollowRequest.Reject" = "rexeitar";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rexeitada";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Mostrar Todo";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Mostrar mencións";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "marcou a túa publicación como favorita";
|
||||
|
|
|
@ -106,9 +106,9 @@
|
|||
"Common.Controls.Status.Actions.Unreblog" = "ブーストを戻す";
|
||||
"Common.Controls.Status.ContentWarning" = "コンテンツ警告";
|
||||
"Common.Controls.Status.MediaContentWarning" = "どこかをタップして表示";
|
||||
"Common.Controls.Status.Poll.Closed" = "クローズド";
|
||||
"Common.Controls.Status.Poll.Closed" = "終了";
|
||||
"Common.Controls.Status.Poll.Vote" = "投票";
|
||||
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
|
||||
"Common.Controls.Status.SensitiveContent" = "閲覧注意";
|
||||
"Common.Controls.Status.ShowPost" = "投稿を見る";
|
||||
"Common.Controls.Status.ShowUserProfile" = "プロフィールを見る";
|
||||
"Common.Controls.Status.Tag.Email" = "メール";
|
||||
|
@ -186,7 +186,7 @@
|
|||
"Scene.Compose.Visibility.Public" = "パブリック";
|
||||
"Scene.Compose.Visibility.Unlisted" = "非表示";
|
||||
"Scene.ConfirmEmail.Button.OpenEmailApp" = "メールアプリを開く";
|
||||
"Scene.ConfirmEmail.Button.Resend" = "Resend";
|
||||
"Scene.ConfirmEmail.Button.Resend" = "再送信";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "メールアドレスが正しいかどうか、また、迷惑メールフォルダに入っていないかどうかも確認してください。";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "もう一度メールを送信";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "メールをチェックしてください";
|
||||
|
@ -208,28 +208,28 @@
|
|||
"Scene.Favorite.Title" = "お気に入り";
|
||||
"Scene.FavoritedBy.Title" = "Favorited By";
|
||||
"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。";
|
||||
"Scene.Follower.Title" = "follower";
|
||||
"Scene.Follower.Title" = "フォロワー";
|
||||
"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。";
|
||||
"Scene.Following.Title" = "following";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
|
||||
"Scene.Following.Title" = "フォロー";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "タップすると一番上までスクロールし、もう一度タップすると元の場所に戻ります";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "ロゴボタン";
|
||||
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "新しい投稿を見る";
|
||||
"Scene.HomeTimeline.NavigationBarState.Offline" = "オフライン";
|
||||
"Scene.HomeTimeline.NavigationBarState.Published" = "投稿しました!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "投稿中...";
|
||||
"Scene.HomeTimeline.Title" = "ホーム";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "承認";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "承諾済み";
|
||||
"Scene.Notification.FollowRequest.Reject" = "拒否";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "拒否済み";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "すべて見る";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "メンションを見る";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "さんがあなたの投稿をお気に入りに登録しました";
|
||||
"Scene.Notification.NotificationDescription.FollowedYou" = "さんにフォローされました";
|
||||
"Scene.Notification.NotificationDescription.MentionedYou" = "さんがあなたに返信しました";
|
||||
"Scene.Notification.NotificationDescription.PollHasEnded" = "アンケートが終了しました";
|
||||
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "さんがあなたの投稿をブーストしました";
|
||||
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "さんがあなたにフォローリクエストしました";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "がお気に入りに登録";
|
||||
"Scene.Notification.NotificationDescription.FollowedYou" = "にフォローされました";
|
||||
"Scene.Notification.NotificationDescription.MentionedYou" = "にメンションされました";
|
||||
"Scene.Notification.NotificationDescription.PollHasEnded" = "のアンケートが終了";
|
||||
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "がブースト";
|
||||
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "からのフォローリクエスト";
|
||||
"Scene.Notification.Title.Everything" = "すべて";
|
||||
"Scene.Notification.Title.Mentions" = "メンション";
|
||||
"Scene.Preview.Keyboard.ClosePreview" = "プレビューを閉じる";
|
||||
|
@ -245,13 +245,13 @@
|
|||
"Scene.Profile.Fields.AddRow" = "行追加";
|
||||
"Scene.Profile.Fields.Placeholder.Content" = "コンテンツ";
|
||||
"Scene.Profile.Fields.Placeholder.Label" = "ラベル";
|
||||
"Scene.Profile.Header.FollowsYou" = "Follows You";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account";
|
||||
"Scene.Profile.Header.FollowsYou" = "フォローされています";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "%@をブロックしますか?";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "アカウントをブロック";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "%@をミュートしますか?";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "アカウントをミュート";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "%@のブロックを解除しますか?";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "アカウントのブロックを解除";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "%@をミュートしますか?";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "ミュートを解除";
|
||||
"Scene.Profile.SegmentedControl.About" = "概要";
|
||||
|
|
|
@ -223,10 +223,10 @@ tải lên Mastodon.";
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "Đã đăng!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "Đang đăng tút...";
|
||||
"Scene.HomeTimeline.Title" = "Bảng tin";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Chấp nhận";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Đã chấp nhận";
|
||||
"Scene.Notification.FollowRequest.Reject" = "từ chối";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Đã từ chối";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Hiện mọi thứ";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Hiện lượt nhắc";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "thích tút của bạn";
|
||||
|
|
|
@ -218,10 +218,10 @@
|
|||
"Scene.HomeTimeline.NavigationBarState.Published" = "嘟出去!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "發表嘟文...";
|
||||
"Scene.HomeTimeline.Title" = "首頁";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.FollowRequest.Accept" = "接受";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "已接受";
|
||||
"Scene.Notification.FollowRequest.Reject" = "拒絕";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "已拒絕";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "顯示全部";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "顯示提及";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "最愛了您的嘟文";
|
||||
|
|
|
@ -118,7 +118,7 @@ extension MetaLabel {
|
|||
|
||||
case .autoCompletion:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 22)
|
||||
textColor = Asset.Colors.brandBlue.color
|
||||
textColor = Asset.Colors.brand.color
|
||||
|
||||
case .accountListName:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 22)
|
||||
|
@ -146,7 +146,7 @@ extension MetaLabel {
|
|||
]
|
||||
linkAttributes = [
|
||||
.font: font,
|
||||
.foregroundColor: Asset.Colors.brandBlue.color
|
||||
.foregroundColor: Asset.Colors.brand.color
|
||||
]
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@ extension PollOptionView {
|
|||
var disposeBag = Set<AnyCancellable>()
|
||||
var observations = Set<NSKeyValueObservation>()
|
||||
public var objects = Set<NSManagedObject>()
|
||||
|
||||
let layoutDidUpdate = PassthroughSubject<Void, Never>()
|
||||
|
||||
@Published public var userIdentifier: UserIdentifier?
|
||||
|
||||
|
@ -47,8 +49,8 @@ extension PollOptionView {
|
|||
@Published public var voteState: VoteState = .hidden
|
||||
|
||||
@Published public var roundedBackgroundViewColor: UIColor = .clear
|
||||
@Published public var primaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color
|
||||
@Published public var secondaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color.withAlphaComponent(0.5)
|
||||
@Published public var primaryStripProgressViewTintColor: UIColor = Asset.Colors.brand.color.withAlphaComponent(0.8)
|
||||
@Published public var secondaryStripProgressViewTintColor: UIColor = Asset.Colors.brand.color.withAlphaComponent(0.5)
|
||||
|
||||
@Published public var groupedAccessibilityLabel = ""
|
||||
|
||||
|
@ -180,6 +182,39 @@ extension PollOptionView.ViewModel {
|
|||
}
|
||||
.store(in: &disposeBag)
|
||||
|
||||
Publishers.CombineLatest(
|
||||
$voteState,
|
||||
layoutDidUpdate
|
||||
)
|
||||
.sink { voteState, _ in
|
||||
guard case .plain = view.style else { return }
|
||||
|
||||
view.layoutIfNeeded()
|
||||
|
||||
switch voteState {
|
||||
case .hidden:
|
||||
view.optionTextField.textColor = Asset.Colors.Label.primary.color
|
||||
view.optionTextField.layer.removeShadow()
|
||||
case .reveal(_, let percentage, _):
|
||||
if CGFloat(percentage) * view.roundedBackgroundView.frame.width > view.optionLabelMiddlePaddingView.frame.minX {
|
||||
view.optionTextField.textColor = .white
|
||||
view.optionTextField.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0)
|
||||
} else {
|
||||
view.optionTextField.textColor = Asset.Colors.Label.primary.color
|
||||
view.optionTextField.layer.removeShadow()
|
||||
}
|
||||
|
||||
if CGFloat(percentage) * view.roundedBackgroundView.frame.width > view.optionLabelMiddlePaddingView.frame.maxX {
|
||||
view.optionPercentageLabel.textColor = .white
|
||||
view.optionPercentageLabel.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0)
|
||||
} else {
|
||||
view.optionPercentageLabel.textColor = Asset.Colors.Label.primary.color
|
||||
view.optionPercentageLabel.layer.removeShadow()
|
||||
}
|
||||
}
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
|
||||
bindAccessibility(view: view)
|
||||
}
|
||||
|
||||
|
@ -196,4 +231,3 @@ extension PollOptionView.ViewModel {
|
|||
.store(in: &disposeBag)
|
||||
}
|
||||
}
|
||||
|
||||
|
|