forked from zelo72/mastodon-ios
Merge branch 'release/1.0.1'
This commit is contained in:
commit
5727d6a80f
|
@ -0,0 +1,32 @@
|
||||||
|
## Description
|
||||||
|
<!--Brief description for bug-->
|
||||||
|
|
||||||
|
|
||||||
|
## App version
|
||||||
|
> You can check the version and build number in app setting footer.
|
||||||
|
|
||||||
|
<!--Version Code here-->
|
||||||
|
- Version: v0.0.0
|
||||||
|
- Build: 0
|
||||||
|
|
||||||
|
## Detail
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
|
||||||
|
<!--How to reproduce this bug?-->
|
||||||
|
|
||||||
|
1. Tap …
|
||||||
|
2. …
|
||||||
|
|
||||||
|
### Actual Behavior
|
||||||
|
|
||||||
|
<!--What happened?-->
|
||||||
|
|
||||||
|
The app …
|
||||||
|
|
||||||
|
### Expected behavior
|
||||||
|
|
||||||
|
<!--What is the expected behavior-->
|
||||||
|
|
||||||
|
The app …
|
||||||
|
|
|
@ -19,8 +19,8 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: force Xcode 12.2
|
- name: force Xcode 12.4
|
||||||
run: sudo xcode-select -switch /Applications/Xcode_12.2.app
|
run: sudo xcode-select -switch /Applications/Xcode_12.4.app
|
||||||
- name: setup
|
- name: setup
|
||||||
run: exec ./.github/scripts/setup.sh
|
run: exec ./.github/scripts/setup.sh
|
||||||
- name: build
|
- name: build
|
||||||
|
|
|
@ -1,20 +1,23 @@
|
||||||
# Localization
|
# Localization
|
||||||
|
[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
||||||
|
|
||||||
Mastodon localization template file
|
Mastodon localization template file
|
||||||
|
|
||||||
|
|
||||||
## How to contribute?
|
## How to contribute?
|
||||||
|
|
||||||
TBD
|
Please use the [Crodwin](https://crowdin.com/project/mastodon-for-ios) to contribute. If your language is not in the list. Please feel free to open the issue.
|
||||||
|
|
||||||
## How to maintains
|
## How to maintains
|
||||||
|
|
||||||
|
The project use a script to generate Xcode localized strings files.
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
// enter workdir
|
// enter workdir
|
||||||
cd Mastodon
|
cd Mastodon
|
||||||
// edit i18n json
|
|
||||||
open ./Localization/app.json
|
|
||||||
// update resource
|
|
||||||
update_localization.sh
|
|
||||||
|
|
||||||
|
// merge PR from Crowdin bot
|
||||||
|
|
||||||
|
// update resource
|
||||||
|
./update_localization.sh
|
||||||
```
|
```
|
|
@ -2033,7 +2033,6 @@
|
||||||
DB427DC925BAA00100D1B89D = {
|
DB427DC925BAA00100D1B89D = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */,
|
|
||||||
DBF53F5F25C14E88008AAC7B /* Mastodon.xctestplan */,
|
DBF53F5F25C14E88008AAC7B /* Mastodon.xctestplan */,
|
||||||
DBF53F6025C14E9D008AAC7B /* MastodonSDK.xctestplan */,
|
DBF53F6025C14E9D008AAC7B /* MastodonSDK.xctestplan */,
|
||||||
DB3D0FED25BAA42200EAA174 /* MastodonSDK */,
|
DB3D0FED25BAA42200EAA174 /* MastodonSDK */,
|
||||||
|
@ -2599,6 +2598,7 @@
|
||||||
DB8FABC826AEC7B2008E5AF4 /* MastodonIntent */ = {
|
DB8FABC826AEC7B2008E5AF4 /* MastodonIntent */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */,
|
||||||
DB8FABD626AEC864008E5AF4 /* MastodonIntent.entitlements */,
|
DB8FABD626AEC864008E5AF4 /* MastodonIntent.entitlements */,
|
||||||
DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */,
|
DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */,
|
||||||
DBB8AB4526AECDE200F6D281 /* SendPostIntentHandler.swift */,
|
DBB8AB4526AECDE200F6D281 /* SendPostIntentHandler.swift */,
|
||||||
|
@ -4482,7 +4482,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -4490,7 +4490,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -4509,7 +4509,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -4517,7 +4517,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -4772,7 +4772,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4780,7 +4780,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4796,7 +4796,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4804,7 +4804,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4820,7 +4820,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4828,7 +4828,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4844,7 +4844,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4852,7 +4852,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4868,7 +4868,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4876,7 +4876,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4892,7 +4892,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4900,7 +4900,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4916,7 +4916,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4924,7 +4924,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -4940,7 +4940,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4948,7 +4948,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -5030,7 +5030,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -5038,7 +5038,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -5144,7 +5144,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5152,7 +5152,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -5264,7 +5264,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -5272,7 +5272,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -5378,7 +5378,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5386,7 +5386,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -5432,7 +5432,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5440,7 +5440,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -5455,7 +5455,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 50;
|
CURRENT_PROJECT_VERSION = 51;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5463,7 +5463,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<key>AppShared.xcscheme_^#shared#^_</key>
|
<key>AppShared.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>26</integer>
|
<integer>25</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>CoreDataStack.xcscheme_^#shared#^_</key>
|
<key>CoreDataStack.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>25</integer>
|
<integer>27</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
|
|
@ -58,6 +58,7 @@ extension SettingsItem {
|
||||||
|
|
||||||
enum Link: CaseIterable, Hashable {
|
enum Link: CaseIterable, Hashable {
|
||||||
case accountSettings
|
case accountSettings
|
||||||
|
case github
|
||||||
case termsOfService
|
case termsOfService
|
||||||
case privacyPolicy
|
case privacyPolicy
|
||||||
case clearMediaCache
|
case clearMediaCache
|
||||||
|
@ -66,6 +67,7 @@ extension SettingsItem {
|
||||||
var title: String {
|
var title: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .accountSettings: return L10n.Scene.Settings.Section.BoringZone.accountSettings
|
case .accountSettings: return L10n.Scene.Settings.Section.BoringZone.accountSettings
|
||||||
|
case .github: return "GitHub"
|
||||||
case .termsOfService: return L10n.Scene.Settings.Section.BoringZone.terms
|
case .termsOfService: return L10n.Scene.Settings.Section.BoringZone.terms
|
||||||
case .privacyPolicy: return L10n.Scene.Settings.Section.BoringZone.privacy
|
case .privacyPolicy: return L10n.Scene.Settings.Section.BoringZone.privacy
|
||||||
case .clearMediaCache: return L10n.Scene.Settings.Section.SpicyZone.clear
|
case .clearMediaCache: return L10n.Scene.Settings.Section.SpicyZone.clear
|
||||||
|
@ -76,6 +78,7 @@ extension SettingsItem {
|
||||||
var textColor: UIColor {
|
var textColor: UIColor {
|
||||||
switch self {
|
switch self {
|
||||||
case .accountSettings: return Asset.Colors.brandBlue.color
|
case .accountSettings: return Asset.Colors.brandBlue.color
|
||||||
|
case .github: return Asset.Colors.brandBlue.color
|
||||||
case .termsOfService: return Asset.Colors.brandBlue.color
|
case .termsOfService: return Asset.Colors.brandBlue.color
|
||||||
case .privacyPolicy: return Asset.Colors.brandBlue.color
|
case .privacyPolicy: return Asset.Colors.brandBlue.color
|
||||||
case .clearMediaCache: return .systemRed
|
case .clearMediaCache: return .systemRed
|
||||||
|
|
|
@ -66,7 +66,7 @@ extension MetaLabel {
|
||||||
|
|
||||||
case .settingTableFooter:
|
case .settingTableFooter:
|
||||||
font = .preferredFont(forTextStyle: .body)
|
font = .preferredFont(forTextStyle: .body)
|
||||||
textColor = Asset.Colors.Label.primary.color
|
textColor = Asset.Colors.Label.secondary.color
|
||||||
numberOfLines = 0
|
numberOfLines = 0
|
||||||
textContainer.maximumNumberOfLines = 0
|
textContainer.maximumNumberOfLines = 0
|
||||||
paragraphStyle.alignment = .center
|
paragraphStyle.alignment = .center
|
||||||
|
|
|
@ -95,7 +95,36 @@ final class ComposeViewModel: NSObject {
|
||||||
case .post, .hashtag, .mention: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newPost)
|
case .post, .hashtag, .mention: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newPost)
|
||||||
case .reply: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newReply)
|
case .reply: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newReply)
|
||||||
}
|
}
|
||||||
self.selectedStatusVisibility = CurrentValueSubject(context.authenticationService.activeMastodonAuthentication.value?.user.locked == true ? .private : .public)
|
self.selectedStatusVisibility = {
|
||||||
|
// default private when user locked
|
||||||
|
var visibility: ComposeToolbarView.VisibilitySelectionType = context.authenticationService.activeMastodonAuthentication.value?.user.locked == true ? .private : .public
|
||||||
|
// set visibility for reply post
|
||||||
|
switch composeKind {
|
||||||
|
case .reply(let repliedToStatusObjectID):
|
||||||
|
context.managedObjectContext.performAndWait {
|
||||||
|
guard let status = try? context.managedObjectContext.existingObject(with: repliedToStatusObjectID) as? Status else {
|
||||||
|
assertionFailure()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
guard let repliedStatusVisibility = status.visibilityEnum else { return }
|
||||||
|
switch repliedStatusVisibility {
|
||||||
|
case .public, .unlisted:
|
||||||
|
// keep default
|
||||||
|
break
|
||||||
|
case .private:
|
||||||
|
visibility = .private
|
||||||
|
case .direct:
|
||||||
|
visibility = .direct
|
||||||
|
case ._other:
|
||||||
|
assertionFailure()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return CurrentValueSubject(visibility)
|
||||||
|
}()
|
||||||
self.activeAuthentication = CurrentValueSubject(context.authenticationService.activeMastodonAuthentication.value)
|
self.activeAuthentication = CurrentValueSubject(context.authenticationService.activeMastodonAuthentication.value)
|
||||||
self.activeAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value)
|
self.activeAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value)
|
||||||
super.init()
|
super.init()
|
||||||
|
|
|
@ -388,7 +388,7 @@ extension HomeTimelineViewController: LoadMoreConfigurableTableViewContainer {
|
||||||
typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell
|
typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell
|
||||||
typealias LoadingState = HomeTimelineViewModel.LoadOldestState.Loading
|
typealias LoadingState = HomeTimelineViewModel.LoadOldestState.Loading
|
||||||
var loadMoreConfigurableTableView: UITableView { return tableView }
|
var loadMoreConfigurableTableView: UITableView { return tableView }
|
||||||
var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadLatestStateMachine }
|
var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadOldestStateMachine }
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - UITableViewDelegate
|
// MARK: - UITableViewDelegate
|
||||||
|
|
|
@ -744,13 +744,33 @@ extension MastodonRegisterViewController {
|
||||||
let username = viewModel.username.value
|
let username = viewModel.username.value
|
||||||
let email = viewModel.email.value
|
let email = viewModel.email.value
|
||||||
let password = viewModel.password.value
|
let password = viewModel.password.value
|
||||||
|
|
||||||
|
let locale: String = {
|
||||||
|
let fallbackLanguageCode = Locale.current.languageCode ?? "en"
|
||||||
|
guard let identifier = Locale.preferredLanguages.first else {
|
||||||
|
return fallbackLanguageCode
|
||||||
|
}
|
||||||
|
let local = Locale(identifier: identifier)
|
||||||
|
guard let languageCode = local.languageCode else {
|
||||||
|
return fallbackLanguageCode
|
||||||
|
}
|
||||||
|
switch languageCode {
|
||||||
|
case "zh":
|
||||||
|
// Check Simplified Chinese / Traditional Chinese
|
||||||
|
// https://github.com/gunchleoc/mastodon/blob/ed6153b8f24d3a8f5a124cc95683bd1f20aec882/app/helpers/settings_helper.rb
|
||||||
|
guard let regionCode = local.regionCode else { return languageCode }
|
||||||
|
return "zh" + "-" + regionCode
|
||||||
|
default:
|
||||||
|
return languageCode
|
||||||
|
}
|
||||||
|
}()
|
||||||
let query = Mastodon.API.Account.RegisterQuery(
|
let query = Mastodon.API.Account.RegisterQuery(
|
||||||
reason: viewModel.reason.value,
|
reason: viewModel.reason.value,
|
||||||
username: username,
|
username: username,
|
||||||
email: email,
|
email: email,
|
||||||
password: password,
|
password: password,
|
||||||
agreement: true, // user confirmed in the server rules scene
|
agreement: true, // user confirmed in the server rules scene
|
||||||
locale: Locale.current.languageCode ?? "en"
|
locale: locale
|
||||||
)
|
)
|
||||||
|
|
||||||
// register without show server rules
|
// register without show server rules
|
||||||
|
|
|
@ -105,18 +105,18 @@ class SettingsViewController: UIViewController, NeedsDependency {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
let tableFooterLabel = MetaLabel(style: .settingTableFooter)
|
let tableFooterLabel = MetaLabel(style: .settingTableFooter)
|
||||||
// lazy var tableFooterView: UIView = {
|
lazy var tableFooterView: UIView = {
|
||||||
// // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Height' UIStackView:0x7ffe41e47da0.height == 0)
|
// init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Height' UIStackView:0x7ffe41e47da0.height == 0)
|
||||||
// let view = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 320))
|
let view = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 320))
|
||||||
// view.isLayoutMarginsRelativeArrangement = true
|
view.isLayoutMarginsRelativeArrangement = true
|
||||||
// view.layoutMargins = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
|
view.layoutMargins = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
|
||||||
// view.axis = .vertical
|
view.axis = .vertical
|
||||||
// view.alignment = .center
|
view.alignment = .center
|
||||||
//
|
|
||||||
// tableFooterLabel.linkDelegate = self
|
// tableFooterLabel.linkDelegate = self
|
||||||
// view.addArrangedSubview(tableFooterLabel)
|
view.addArrangedSubview(tableFooterLabel)
|
||||||
// return view
|
return view
|
||||||
// }()
|
}()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
@ -188,24 +188,31 @@ class SettingsViewController: UIViewController, NeedsDependency {
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
viewModel.currentInstance
|
|
||||||
.receive(on: RunLoop.main)
|
let footer = "Mastodon v\(UIApplication.appVersion()) (\(UIApplication.appBuild()))"
|
||||||
.sink { [weak self] instance in
|
let metaContent = PlaintextMetaContent(string: footer)
|
||||||
guard let self = self else { return }
|
tableFooterLabel.configure(content: metaContent)
|
||||||
let version = instance?.version ?? "-"
|
|
||||||
let link = #"<a href="https://github.com/mastodon/mastodon">mastodon/mastodon</a>"#
|
// FIXME:
|
||||||
let content = L10n.Scene.Settings.Footer.mastodonDescription(link, version)
|
// needs a workaround for GitHub link
|
||||||
let mastodonContent = MastodonContent(content: content, emojis: [:])
|
// viewModel.currentInstance
|
||||||
do {
|
// .receive(on: RunLoop.main)
|
||||||
let metaContent = try MastodonMetaContent.convert(document: mastodonContent)
|
// .sink { [weak self] instance in
|
||||||
self.tableFooterLabel.configure(content: metaContent)
|
// guard let self = self else { return }
|
||||||
} catch {
|
// let version = instance?.version ?? "-"
|
||||||
let metaContent = PlaintextMetaContent(string: "")
|
// let link = #"<a href="https://github.com/mastodon/mastodon">mastodon/mastodon</a>"#
|
||||||
self.tableFooterLabel.configure(content: metaContent)
|
// let content = L10n.Scene.Settings.Footer.mastodonDescription(link, version)
|
||||||
assertionFailure()
|
// let mastodonContent = MastodonContent(content: content, emojis: [:])
|
||||||
}
|
// do {
|
||||||
}
|
// let metaContent = try MastodonMetaContent.convert(document: mastodonContent)
|
||||||
.store(in: &disposeBag)
|
// self.tableFooterLabel.configure(content: metaContent)
|
||||||
|
// } catch {
|
||||||
|
// let metaContent = PlaintextMetaContent(string: "")
|
||||||
|
// self.tableFooterLabel.configure(content: metaContent)
|
||||||
|
// assertionFailure()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .store(in: &disposeBag)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func setupView() {
|
private func setupView() {
|
||||||
|
@ -259,7 +266,7 @@ class SettingsViewController: UIViewController, NeedsDependency {
|
||||||
settingsAppearanceTableViewCellDelegate: self,
|
settingsAppearanceTableViewCellDelegate: self,
|
||||||
settingsToggleCellDelegate: self
|
settingsToggleCellDelegate: self
|
||||||
)
|
)
|
||||||
// tableView.tableFooterView = tableFooterView
|
tableView.tableFooterView = tableFooterView
|
||||||
}
|
}
|
||||||
|
|
||||||
func alertToSignout() {
|
func alertToSignout() {
|
||||||
|
@ -376,6 +383,13 @@ extension SettingsViewController: UITableViewDelegate {
|
||||||
guard let box = context.authenticationService.activeMastodonAuthenticationBox.value,
|
guard let box = context.authenticationService.activeMastodonAuthenticationBox.value,
|
||||||
let url = URL(string: "https://\(box.domain)/auth/edit") else { return }
|
let url = URL(string: "https://\(box.domain)/auth/edit") else { return }
|
||||||
viewModel.openAuthenticationPage(authenticateURL: url, presentationContextProvider: self)
|
viewModel.openAuthenticationPage(authenticateURL: url, presentationContextProvider: self)
|
||||||
|
case .github:
|
||||||
|
guard let url = URL(string: "https://github.com/mastodon/mastodon-ios") else { break }
|
||||||
|
coordinator.present(
|
||||||
|
scene: .safari(url: url),
|
||||||
|
from: self,
|
||||||
|
transition: .safariPresent(animated: true, completion: nil)
|
||||||
|
)
|
||||||
case .termsOfService, .privacyPolicy:
|
case .termsOfService, .privacyPolicy:
|
||||||
// same URL
|
// same URL
|
||||||
guard let url = viewModel.privacyURL else { break }
|
guard let url = viewModel.privacyURL else { break }
|
||||||
|
|
|
@ -130,6 +130,7 @@ extension SettingsViewModel {
|
||||||
let boringZoneSettingsItems: [SettingsItem] = {
|
let boringZoneSettingsItems: [SettingsItem] = {
|
||||||
let links: [SettingsItem.Link] = [
|
let links: [SettingsItem.Link] = [
|
||||||
.accountSettings,
|
.accountSettings,
|
||||||
|
.github,
|
||||||
.termsOfService,
|
.termsOfService,
|
||||||
.privacyPolicy
|
.privacyPolicy
|
||||||
]
|
]
|
||||||
|
|
8
Podfile
8
Podfile
|
@ -56,3 +56,11 @@ plugin 'cocoapods-keys', {
|
||||||
"notification_endpoint_debug"
|
"notification_endpoint_debug"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
post_install do |installer|
|
||||||
|
installer.pods_project.targets.each do |target|
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -78,6 +78,6 @@ SPEC CHECKSUMS:
|
||||||
Texture: 2f109e937850d94d1d07232041c9c7313ccddb81
|
Texture: 2f109e937850d94d1d07232041c9c7313ccddb81
|
||||||
"UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3
|
"UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3
|
||||||
|
|
||||||
PODFILE CHECKSUM: 1ea006302c191ee52b6206e4957aa78fb66fe690
|
PODFILE CHECKSUM: 4db0bdf969729c5758bd923e33d9e097cb892086
|
||||||
|
|
||||||
COCOAPODS: 1.10.1
|
COCOAPODS: 1.10.2
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
# Mastodon
|
# Mastodon
|
||||||
|
[![CI](https://github.com/mastodon/mastodon-ios/actions/workflows/main.yml/badge.svg)](https://github.com/mastodon/mastodon-ios/actions/workflows/main.yml) [![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
||||||
|
|
||||||
|
|
||||||
<a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974?itsct=apps_box_badge&itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&releaseDate=1627603200&h=72b0c8495c2c0af1291efef280c4c2c1" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a>
|
<a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974?itsct=apps_box_badge&itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&releaseDate=1627603200&h=72b0c8495c2c0af1291efef280c4c2c1" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a>
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#
|
||||||
|
# Files configuration
|
||||||
|
#
|
||||||
|
files: [
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# Source files filter
|
||||||
|
# e.g. "/resources/en/*.json"
|
||||||
|
#
|
||||||
|
"source" : "/Localization/app.json",
|
||||||
|
|
||||||
|
#
|
||||||
|
# Where translations will be placed
|
||||||
|
# e.g. "/resources/%two_letters_code%/%original_file_name%"
|
||||||
|
#
|
||||||
|
"translation" : "/Localization/StringsConvertor/input/%locale_with_underscore%/%original_file_name%",
|
||||||
|
|
||||||
|
#
|
||||||
|
# The parameter "update_option" is optional. If it is not set, after the files update the translations for changed strings will be removed. Use to fix typos and for minor changes in the source strings
|
||||||
|
# e.g. "update_as_unapproved" or "update_without_changes"
|
||||||
|
#
|
||||||
|
"update_option" : "update_as_unapproved",
|
||||||
|
#
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source" : "/Localization/ios-infoPlist.json",
|
||||||
|
"translation" : "/Localization/StringsConvertor/input/%locale_with_underscore%/%original_file_name%",
|
||||||
|
"update_option" : "update_as_unapproved",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source" : "/MastodonIntent/en.lproj/Intents.strings",
|
||||||
|
"translation" : "/Localization/StringsConvertor/Intents/input/%locale_with_underscore%/%original_file_name%",
|
||||||
|
"update_option" : "update_as_unapproved",
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue