From f8a7eb4c941354aff935d29931943584b4587a2b Mon Sep 17 00:00:00 2001 From: Federico Maccaroni Date: Tue, 25 Jan 2022 17:41:56 -0300 Subject: [PATCH] Add Share app Extension on iOS for Send (re-PR) (#1660) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * WIP Add Share app extension on iOS for Send * Added Share app extension on iOS for Send and some code fixes as well * Updated iOS csprojs configs to linkskip the new extension project and also added AdHoc and AppStore configurations to iOS.ShareExtension.csproj * Code clean up and transformed bundle resources into links to the already used pngs of the main iOS project on ShareExtension * Updated build.yml to include provisioning profile for iOS Share extension * Adding in the missing provisioning profile * Removed .DS_Store from the iOS.ShareExtension csproj Resources * switching out the share extension profile * Added Share extension provisioning profile configuration on export options app store for github and also removed custom info.plist config for localhost which is not necessary * Moved property so that it's grouped with the full ones * Added AppCenter Crashes package to Core and updated FireAndForget Task Extension * Updated bundle reference of FontAwesome.ttf to bwi-font.ttf in order for it to compile on ShareExtension Co-authored-by: Joseph Flinn Co-authored-by: Álison Fernandes --- .../resources/export-options-app-store.plist | 2 + .../dist_share_extension.mobileprovision.gpg | Bin 0 -> 7915 bytes .github/workflows/build.yml | 7 + bitwarden-mobile.sln | 97 ++-- src/App/Models/AppOptions.cs | 2 + src/App/Pages/Send/SendAddEditPage.xaml | 5 +- src/App/Pages/Send/SendAddEditPage.xaml.cs | 101 +++-- .../Pages/Send/SendAddEditPageViewModel.cs | 80 +++- src/App/Resources/AppResources.Designer.cs | 6 + src/App/Resources/AppResources.resx | 6 + src/Core/Core.csproj | 1 + src/Core/Services/FileUploadService.cs | 1 + src/Core/Services/SendService.cs | 2 +- src/Core/Utilities/LazyResolve.cs | 12 + src/Core/Utilities/TaskExtensions.cs | 32 ++ src/iOS.Autofill/iOS.Autofill.csproj | 14 +- src/iOS.Core/Constants.cs | 1 + src/iOS.Core/Utilities/iOSCoreHelpers.cs | 2 +- src/iOS.Extension/MainInterface.storyboard | 59 +-- src/iOS.Extension/iOS.Extension.csproj | 12 +- src/iOS.ShareExtension/Entitlements.plist | 14 + src/iOS.ShareExtension/Info.plist | 104 +++++ .../LoadingViewController.cs | 428 ++++++++++++++++++ .../LoadingViewController.designer.cs | 26 ++ .../LockPasswordViewController.cs | 40 ++ .../LockPasswordViewController.designer.cs | 56 +++ .../MainInterface.storyboard | 113 +++++ src/iOS.ShareExtension/Models/Context.cs | 17 + .../iOS.ShareExtension.csproj | 235 ++++++++++ src/iOS/iOS.csproj | 16 +- 30 files changed, 1361 insertions(+), 130 deletions(-) create mode 100644 .github/secrets/dist_share_extension.mobileprovision.gpg create mode 100644 src/Core/Utilities/LazyResolve.cs create mode 100644 src/Core/Utilities/TaskExtensions.cs create mode 100644 src/iOS.ShareExtension/Entitlements.plist create mode 100644 src/iOS.ShareExtension/Info.plist create mode 100644 src/iOS.ShareExtension/LoadingViewController.cs create mode 100644 src/iOS.ShareExtension/LoadingViewController.designer.cs create mode 100644 src/iOS.ShareExtension/LockPasswordViewController.cs create mode 100644 src/iOS.ShareExtension/LockPasswordViewController.designer.cs create mode 100644 src/iOS.ShareExtension/MainInterface.storyboard create mode 100644 src/iOS.ShareExtension/Models/Context.cs create mode 100644 src/iOS.ShareExtension/iOS.ShareExtension.csproj diff --git a/.github/resources/export-options-app-store.plist b/.github/resources/export-options-app-store.plist index 92b07238b..df3ed635b 100644 --- a/.github/resources/export-options-app-store.plist +++ b/.github/resources/export-options-app-store.plist @@ -12,6 +12,8 @@ Dist: Autofill 2021 com.8bit.bitwarden.find-login-action-extension Dist: Extension 2021 + com.8bit.bitwarden.share-extension + Dist: Share Extension 2021 diff --git a/.github/secrets/dist_share_extension.mobileprovision.gpg b/.github/secrets/dist_share_extension.mobileprovision.gpg new file mode 100644 index 0000000000000000000000000000000000000000..0fad3826d0a761e9dc1de74b7d94ca0ab2c1169e GIT binary patch literal 7915 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 VcMmb-uQS7B=gH*Hnxjl)(@k0mXb1oR literal 0 HcmV?d00001 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20128af67..7578e3849 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -382,6 +382,8 @@ jobs: --output $HOME/secrets/dist_bitwarden.mobileprovision ./.github/secrets/dist_bitwarden.mobileprovision.gpg gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ --output $HOME/secrets/dist_extension.mobileprovision ./.github/secrets/dist_extension.mobileprovision.gpg + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output $HOME/secrets/dist_share_extension.mobileprovision ./.github/secrets/dist_share_extension.mobileprovision.gpg shell: bash - name: Increment version @@ -395,6 +397,7 @@ jobs: perl -0777 -pi.bak -e 's/CFBundleVersion<\/key>\s*1<\/string>/CFBundleVersion<\/key>\n\t'"$BUILD_NUMBER"'<\/string>/' ./src/iOS/Info.plist perl -0777 -pi.bak -e 's/CFBundleVersion<\/key>\s*1<\/string>/CFBundleVersion<\/key>\n\t'"$BUILD_NUMBER"'<\/string>/' ./src/iOS.Extension/Info.plist perl -0777 -pi.bak -e 's/CFBundleVersion<\/key>\s*1<\/string>/CFBundleVersion<\/key>\n\t'"$BUILD_NUMBER"'<\/string>/' ./src/iOS.Autofill/Info.plist + perl -0777 -pi.bak -e 's/CFBundleVersion<\/key>\s*1<\/string>/CFBundleVersion<\/key>\n\t'"$BUILD_NUMBER"'<\/string>/' ./src/iOS.ShareExtension/Info.plist shell: bash - name: Update Entitlements @@ -428,6 +431,7 @@ jobs: AUTOFILL_PROFILE_PATH=$HOME/secrets/dist_autofill.mobileprovision BITWARDEN_PROFILE_PATH=$HOME/secrets/dist_bitwarden.mobileprovision EXTENSION_PROFILE_PATH=$HOME/secrets/dist_extension.mobileprovision + SHARE_EXTENSION_PROFILE_PATH=$HOME/secrets/dist_share_extension.mobileprovision PROFILES_DIR_PATH=$HOME/Library/MobileDevice/Provisioning\ Profiles mkdir -p "$PROFILES_DIR_PATH" @@ -440,6 +444,9 @@ jobs: EXTENSION_UUID=$(grep UUID -A1 -a $EXTENSION_PROFILE_PATH | grep -io "[-A-F0-9]\{36\}") cp $EXTENSION_PROFILE_PATH "$PROFILES_DIR_PATH/$EXTENSION_UUID.mobileprovision" + + SHARE_EXTENSION_UUID=$(grep UUID -A1 -a $SHARE_EXTENSION_PROFILE_PATH | grep -io "[-A-F0-9]\{36\}") + cp $SHARE_EXTENSION_PROFILE_PATH "$PROFILES_DIR_PATH/$SHARE_EXTENSION_UUID.mobileprovision" shell: bash - name: Restore packages diff --git a/bitwarden-mobile.sln b/bitwarden-mobile.sln index 3d74bd7c6..07434b50a 100644 --- a/bitwarden-mobile.sln +++ b/bitwarden-mobile.sln @@ -38,12 +38,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS", "src\iOS\iOS.csproj", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Extension", "src\iOS.Extension\iOS.Extension.csproj", "{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Autofill", "src\iOS.Autofill\iOS.Autofill.csproj", "{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "test\Common\Common.csproj", "{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Test", "test\Core.Test\Core.Test.csproj", "{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.ShareExtension", "src\iOS.ShareExtension\iOS.ShareExtension.csproj", "{F8C3F648-EA5A-4719-8005-85D1690B1655}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Autofill", "src\iOS.Autofill\iOS.Autofill.csproj", "{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU @@ -325,35 +327,6 @@ Global {324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhone.Build.0 = Release|iPhone {324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator {324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.Build.0 = AppStore|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.ActiveCfg = AppStore|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.Build.0 = AppStore|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.ActiveCfg = Debug|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Build.0 = Debug|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Deploy.0 = Debug|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.ActiveCfg = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.Build.0 = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.ActiveCfg = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.Build.0 = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|Any CPU.ActiveCfg = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.ActiveCfg = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.Build.0 = Release|iPhone - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator {4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU @@ -414,6 +387,65 @@ Global {8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhone.Build.0 = Release|Any CPU {8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|Any CPU.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhone.Build.0 = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|Any CPU.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhone.ActiveCfg = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhone.Build.0 = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhone.ActiveCfg = Debug|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhone.Build.0 = Debug|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|Any CPU.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhone.ActiveCfg = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhone.Build.0 = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|Any CPU.ActiveCfg = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|Any CPU.Build.0 = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhone.ActiveCfg = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhone.Build.0 = Release|iPhone + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.Build.0 = AppStore|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.Build.0 = AppStore|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.ActiveCfg = Debug|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Build.0 = Debug|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Deploy.0 = Debug|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.ActiveCfg = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.Build.0 = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.ActiveCfg = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.Build.0 = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|Any CPU.ActiveCfg = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.ActiveCfg = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.Build.0 = Release|iPhone + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -428,9 +460,10 @@ Global {E71F3053-056C-4381-9638-048ED73BDFF6} = {D10CA4A9-F866-40E1-B658-F69051236C71} {599E0201-420A-4C3E-A7BA-5349F72E0B15} = {D10CA4A9-F866-40E1-B658-F69051236C71} {324BE76C-38FA-4F11-8BB1-95C7B3B1B545} = {D10CA4A9-F866-40E1-B658-F69051236C71} - {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A} = {D10CA4A9-F866-40E1-B658-F69051236C71} {4085B0A5-12A9-4993-B8B8-4ACE72E62E39} = {8904C536-C67D-420F-9971-51B26574C3AA} {8AE548D9-A567-4E97-995E-93EC7DB0FDE0} = {8904C536-C67D-420F-9971-51B26574C3AA} + {F8C3F648-EA5A-4719-8005-85D1690B1655} = {D10CA4A9-F866-40E1-B658-F69051236C71} + {8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A} = {D10CA4A9-F866-40E1-B658-F69051236C71} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7D436EA3-8B7E-45D2-8D14-0730BD2E0410} diff --git a/src/App/Models/AppOptions.cs b/src/App/Models/AppOptions.cs index a28a76855..7d7e2b22c 100644 --- a/src/App/Models/AppOptions.cs +++ b/src/App/Models/AppOptions.cs @@ -21,6 +21,7 @@ namespace Bit.App.Models public string SaveCardCode { get; set; } public bool IosExtension { get; set; } public Tuple CreateSend { get; set; } + public bool CopyInsteadOfShareAfterSaving { get; set; } public void SetAllFrom(AppOptions o) { @@ -44,6 +45,7 @@ namespace Bit.App.Models SaveCardCode = o.SaveCardCode; IosExtension = o.IosExtension; CreateSend = o.CreateSend; + CopyInsteadOfShareAfterSaving = o.CopyInsteadOfShareAfterSaving; } } } diff --git a/src/App/Pages/Send/SendAddEditPage.xaml b/src/App/Pages/Send/SendAddEditPage.xaml index eac5429c7..b72250979 100644 --- a/src/App/Pages/Send/SendAddEditPage.xaml +++ b/src/App/Pages/Send/SendAddEditPage.xaml @@ -235,9 +235,10 @@ Margin="10,0,0,0" /> - +