Merge branch 'main' into develop

This commit is contained in:
CMK 2022-07-05 10:01:01 +08:00
commit 206fe8d3bd
109 changed files with 520 additions and 469 deletions

View File

@ -17,6 +17,6 @@
<key>CFBundleShortVersionString</key>
<string>1.4.5</string>
<key>CFBundleVersion</key>
<string>143</string>
<string>144</string>
</dict>
</plist>

View File

@ -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": {

View File

@ -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": {

View File

@ -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": {

View File

@ -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": {

View File

@ -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": {

View File

@ -546,10 +546,10 @@
"show_mentions": "Show Mentions"
},
"follow_request": {
"accept": "Accept",
"accepted": "Accepted",
"reject": "reject",
"rejected": "Rejected"
"accept": "수락",
"accepted": "수락됨",
"reject": "거절",
"rejected": "거절됨"
}
},
"thread": {

View File

@ -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": {

View File

@ -546,10 +546,10 @@
"show_mentions": "顯示提及"
},
"follow_request": {
"accept": "Accept",
"accepted": "Accepted",
"reject": "reject",
"rejected": "Rejected"
"accept": "接受",
"accepted": "已接受",
"reject": "拒絕",
"rejected": "已拒絕"
}
},
"thread": {

View File

@ -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 = (

View File

@ -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>

View File

@ -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):

View File

@ -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
}

View File

@ -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

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View File

@ -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" : {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@ -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
}()

View File

@ -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
}
}

View File

@ -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
}()

View File

@ -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
}()

View File

@ -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
// )
// }
//
//}

View File

@ -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

View File

@ -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 {

View File

@ -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)
}

View File

@ -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
}()

View File

@ -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) }

View File

@ -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

View File

@ -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
}
}

View File

@ -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
}()

View File

@ -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
}()

View File

@ -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>

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"provides-namespace" : true
}
}

View File

@ -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
}
}

View File

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"provides-namespace" : true
}
}

View File

@ -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")

View File

@ -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" = "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. تُشغَّل جميعُ المجتمعِ مِن قِبَلِ مُنظمَةٍ أو فردٍ مُستقلٍ تمامًا.";

View File

@ -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ó";

View File

@ -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";

View File

@ -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";

View File

@ -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" = "概要";

View File

@ -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";

View File

@ -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" = "最愛了您的嘟文";

View File

@ -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
]
}

View File

@ -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)
}
}

Some files were not shown because too many files have changed in this diff Show More