From b60997665bbe34db1cb64f6fd29e48a774775703 Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Fri, 22 Mar 2019 20:11:55 +0400 Subject: [PATCH 01/27] Update submodules --- submodules/Display | 2 +- submodules/TelegramUI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/Display b/submodules/Display index 61d43c3c4b..5c13b77e81 160000 --- a/submodules/Display +++ b/submodules/Display @@ -1 +1 @@ -Subproject commit 61d43c3c4b5286f1bc26cfe0202979925d969e06 +Subproject commit 5c13b77e8112c6838af727991ff05ff4b5ac890d diff --git a/submodules/TelegramUI b/submodules/TelegramUI index e93b3ebe42..1816cfc1ff 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit e93b3ebe42d7de8fa1c3a45e5522e5992a40bdbd +Subproject commit 1816cfc1ff73388fb6c92a5fe709e03912dceb4f From 988e893eba2d9bd430d5ed7a1b73c6b4b1722e6e Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Fri, 22 Mar 2019 21:12:49 +0400 Subject: [PATCH 02/27] Update submodules --- submodules/Postbox | 2 +- submodules/TelegramUI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/Postbox b/submodules/Postbox index c247d46222..7a6b31157c 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit c247d462222edb15acbdb9ac3a14a796dd0cfbb5 +Subproject commit 7a6b31157c294928ca86959a781f715ebbf69e9d diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 1816cfc1ff..d4b8e6c817 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 1816cfc1ff73388fb6c92a5fe709e03912dceb4f +Subproject commit d4b8e6c817f86c7e3fda49970701be2b98f6458e From 93071f7bae0c662477b48eeaa720a87cdaded02f Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Fri, 22 Mar 2019 21:29:32 +0400 Subject: [PATCH 03/27] Update submodules --- submodules/TelegramUI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI b/submodules/TelegramUI index d4b8e6c817..2513cb584f 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit d4b8e6c817f86c7e3fda49970701be2b98f6458e +Subproject commit 2513cb584ff2adf404790b1dac7efdbc439c441c From 0a564236b30da723f5fb777e3ec84e1feea0fe12 Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Fri, 22 Mar 2019 21:38:07 +0400 Subject: [PATCH 04/27] Update submodules --- submodules/TelegramUI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 2513cb584f..a2ee837531 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 2513cb584ff2adf404790b1dac7efdbc439c441c +Subproject commit a2ee837531c39b5b0f69d5f05f45da8eb5cb7421 From 8b213b5e80dbcc4217aec846160d2d5dcd08d771 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sat, 23 Mar 2019 14:36:07 +0400 Subject: [PATCH 05/27] Update submodules --- Telegram-iOS/en.lproj/Localizable.strings | 5 +++++ submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index 34f68766fb..1e29b638f1 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4195,3 +4195,8 @@ Unused sets are archived when you add more."; "ChatList.DeleteForEveryone" = "Delete for me and %@"; "ChatList.ClearChatConfirmation" = "Are you sure you want to delete all\nmessages in the chat with %@?"; + +"Settings.CheckPhoneNumberTitle" = "Is %@ still your number?"; +"Settings.CheckPhoneNumberText" = "Keep your number up to date to ensure you can always log in to Telegram. [Learn more]()"; +"Settings.KeepPhoneNumber" = "Keep %@"; +"Settings.ChangePhoneNumber" = "Change Number"; diff --git a/submodules/TelegramCore b/submodules/TelegramCore index 25aa1551f6..4349734790 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit 25aa1551f654a15287ac604309c0a0516259b0b1 +Subproject commit 43497347909f84cfd39a26f3d14a1a9df337877c diff --git a/submodules/TelegramUI b/submodules/TelegramUI index a2ee837531..dbfa8cc3ea 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit a2ee837531c39b5b0f69d5f05f45da8eb5cb7421 +Subproject commit dbfa8cc3eada7af280cb849ca106811c57b1d4e1 From 7708218bf162523b58cd88693468c2b46fe96804 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 24 Mar 2019 20:55:35 +0400 Subject: [PATCH 06/27] Update submodules --- submodules/TelegramCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramCore b/submodules/TelegramCore index 4349734790..fbc5d0007a 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit 43497347909f84cfd39a26f3d14a1a9df337877c +Subproject commit fbc5d0007a5aa1eed96abdcd63132cfcbe1d1cd7 From 4bbdc52cfd0c0b8fd6be78052523e5d585834802 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 24 Mar 2019 21:45:50 +0400 Subject: [PATCH 07/27] Update submodules --- submodules/TelegramUI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI b/submodules/TelegramUI index dbfa8cc3ea..8ddaca8f05 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit dbfa8cc3eada7af280cb849ca106811c57b1d4e1 +Subproject commit 8ddaca8f059fd7a34db2d4bdd669835dc1d26754 From f9ca2a96e3d58c2b2b552d90f17f43eb4068e690 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 24 Mar 2019 21:55:25 +0400 Subject: [PATCH 08/27] Update submodules --- submodules/TelegramUI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 8ddaca8f05..ae54aa9006 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 8ddaca8f059fd7a34db2d4bdd669835dc1d26754 +Subproject commit ae54aa9006d5a58187146942ec780621719423ce From 93f99e0bcda261f37849fe0e2f784b8820221110 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 24 Mar 2019 22:04:52 +0400 Subject: [PATCH 09/27] Update submodules --- submodules/Display | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/Display b/submodules/Display index 5c13b77e81..7d0164259f 160000 --- a/submodules/Display +++ b/submodules/Display @@ -1 +1 @@ -Subproject commit 5c13b77e8112c6838af727991ff05ff4b5ac890d +Subproject commit 7d0164259f2aa48516393a43822b5b8ab701d843 From 3f427e8d20d0642af017b33a494349c8e38ca368 Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Mon, 25 Mar 2019 21:28:01 +0400 Subject: [PATCH 10/27] Update submodules --- Telegram-iOS/SharedNotificationManager.swift | 1 + submodules/Display | 2 +- submodules/Postbox | 2 +- submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Telegram-iOS/SharedNotificationManager.swift b/Telegram-iOS/SharedNotificationManager.swift index b855d7d78e..b18cd81d58 100644 --- a/Telegram-iOS/SharedNotificationManager.swift +++ b/Telegram-iOS/SharedNotificationManager.swift @@ -198,6 +198,7 @@ final class SharedNotificationManager { let aps = payload["aps"] as? [AnyHashable: Any] var readMessageId: MessageId? + var removedMessageId: MessageId? var isCall = false var isAnnouncement = false var isLocationPolling = false diff --git a/submodules/Display b/submodules/Display index 5c13b77e81..7d0164259f 160000 --- a/submodules/Display +++ b/submodules/Display @@ -1 +1 @@ -Subproject commit 5c13b77e8112c6838af727991ff05ff4b5ac890d +Subproject commit 7d0164259f2aa48516393a43822b5b8ab701d843 diff --git a/submodules/Postbox b/submodules/Postbox index 7a6b31157c..b9a0c90ab4 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit 7a6b31157c294928ca86959a781f715ebbf69e9d +Subproject commit b9a0c90ab4a5e72389272cadf1a7e819ebd5f88e diff --git a/submodules/TelegramCore b/submodules/TelegramCore index 25aa1551f6..fbc5d0007a 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit 25aa1551f654a15287ac604309c0a0516259b0b1 +Subproject commit fbc5d0007a5aa1eed96abdcd63132cfcbe1d1cd7 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index a2ee837531..9bc9084877 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit a2ee837531c39b5b0f69d5f05f45da8eb5cb7421 +Subproject commit 9bc90848770ae5301d0c260c75692ab1dae262c9 From d0396bb007b15ee6f766f6fe8253124f777fbdc3 Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Mon, 25 Mar 2019 21:40:02 +0400 Subject: [PATCH 11/27] Update submodules --- submodules/Postbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/Postbox b/submodules/Postbox index b9a0c90ab4..4cb811a442 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit b9a0c90ab4a5e72389272cadf1a7e819ebd5f88e +Subproject commit 4cb811a4422113791dd784327201fae925e4329c From 65c55d2c8d4e251159612ab4c095ed6bc8fe74dc Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 14:55:45 +0400 Subject: [PATCH 12/27] Update submodules --- submodules/Postbox | 2 +- submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/submodules/Postbox b/submodules/Postbox index 4cb811a442..5debb55eb0 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit 4cb811a4422113791dd784327201fae925e4329c +Subproject commit 5debb55eb0cd0154b866857476bdfb8122308664 diff --git a/submodules/TelegramCore b/submodules/TelegramCore index fbc5d0007a..eb72b51295 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit fbc5d0007a5aa1eed96abdcd63132cfcbe1d1cd7 +Subproject commit eb72b51295e0b0b937d4c0af59adb4fdce4d67a7 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 9bc9084877..ae83518e5a 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 9bc90848770ae5301d0c260c75692ab1dae262c9 +Subproject commit ae83518e5a5fc2b79a9425891ad33962c3066ff9 From 933fb05df34a30234ffdb709d1308533d8ff5b89 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 15:13:22 +0400 Subject: [PATCH 13/27] Update submodules --- submodules/ffmpeg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/ffmpeg b/submodules/ffmpeg index 4ea8057cf2..0495e4606b 160000 --- a/submodules/ffmpeg +++ b/submodules/ffmpeg @@ -1 +1 @@ -Subproject commit 4ea8057cf28b1872bdcf5539481195c75af8e1ed +Subproject commit 0495e4606b6a109f951f963c95b3d57ed5e031ff From 1e665f1f67abaa7d3e7e56f925233eb43e752091 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 15:19:14 +0400 Subject: [PATCH 14/27] no message --- buildbox/.gitignore | 2 + buildbox/build-telegram.sh | 53 ++++++++++++++++++ .../fake-codesigning/certs/SelfSigned.p12 | Bin 0 -> 5280 bytes ...db2-42b4-9215-d8544da24da1.mobileprovision | Bin 0 -> 5920 bytes ...b03-4327-b13e-5a81d77a417f.mobileprovision | Bin 0 -> 4644 bytes ...9b0-43a9-81dc-c5db42768deb.mobileprovision | Bin 0 -> 4625 bytes ...214-4456-96f3-3beab43c8a49.mobileprovision | Bin 0 -> 4667 bytes ...a34-4f37-9bdf-d93d7e67f935.mobileprovision | Bin 0 -> 4641 bytes ...e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision | Bin 0 -> 4682 bytes ...88a-4de9-846a-bc207ea9b8dd.mobileprovision | Bin 0 -> 4667 bytes ...353-4f44-8022-979f48e73c04.mobileprovision | Bin 0 -> 4627 bytes buildbox/guest-build-telegram.sh | 43 ++++++++++++++ 12 files changed, 98 insertions(+) create mode 100644 buildbox/.gitignore create mode 100644 buildbox/build-telegram.sh create mode 100644 buildbox/fake-codesigning/certs/SelfSigned.p12 create mode 100644 buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_f5d6daf2-b88a-4de9-846a-bc207ea9b8dd.mobileprovision create mode 100644 buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision create mode 100644 buildbox/guest-build-telegram.sh diff --git a/buildbox/.gitignore b/buildbox/.gitignore new file mode 100644 index 0000000000..9387f5c0d1 --- /dev/null +++ b/buildbox/.gitignore @@ -0,0 +1,2 @@ +transient-data + diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh new file mode 100644 index 0000000000..6c164e57c1 --- /dev/null +++ b/buildbox/build-telegram.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +set -e +set -x + +BUILDBOX_DIR="buildbox" + +mkdir -p "$BUILDBOX_DIR/transient-data" + +BUILD_CONFIGURATION="$1" + +if [ "$BUILD_CONFIGURATION" == "hockeyapp" ]; then + CODESIGNING_SUBPATH="transient-data/codesigning" +elif [ "$BUILD_CONFIGURATION" == "appstore" ]; then + CODESIGNING_SUBPATH="transient-data/codesigning" +elif [ "$BUILD_CONFIGURATION" == "verify" ]; then + CODESIGNING_SUBPATH="fake-codesigning" +else + echo "Unknown configuration $1" + exit 1 +fi + +if [ ! -d "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" ]; then + echo "$BUILDBOX_DIR/$CODESIGNING_SUBPATH does not exist" + exit 1 +fi + +tar czf "$BUILDBOX_DIR/transient-data/source.tar.gz" --exclude "$BUILDBOX_DIR" . + +VM_BASE_NAME="macos10_14_3_Xcode10_1" + +SNAPSHOT_ID=$(prlctl snapshot-list "$VM_BASE_NAME" | grep -Eo '\{(\d|[a-f]|-)*\}' | tr '\n' '\0') + +if [ -z "$SNAPSHOT_ID" ]; then + echo "$VM_BASE_NAME is required to have one snapshot" + exit 1 +fi + +VM_NAME="$VM_BASE_NAME-$(openssl rand -hex 10)" + +prlctl clone "$VM_BASE_NAME" --name "$VM_NAME" +prlctl snapshot-switch "$VM_NAME" -i "$SNAPSHOT_ID" + +VM_IP=$(prlctl exec "$VM_NAME" "ifconfig | grep inet | grep broadcast | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -1 | tr '\n' '\0'") + +scp -pr "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" telegram@"$VM_IP":codesigning_data +scp -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared +scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar.gz" telegram@"$VM_IP": + +ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" + +#prlctl stop "$VM_NAME" --kill +#prlctl delete "$VM_NAME" diff --git a/buildbox/fake-codesigning/certs/SelfSigned.p12 b/buildbox/fake-codesigning/certs/SelfSigned.p12 new file mode 100644 index 0000000000000000000000000000000000000000..aa2097875be6cd0403d05afdbe2c4cd51f819d27 GIT binary patch literal 5280 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 u;J`-%QDOklp+vAUXqJ!LsWy5;EicIU8NK}g literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision b/buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..1aa18b471441f895689096e65b5ce1b941ba3bad GIT binary patch literal 5920 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 S?n@juF`A7>ZcLxRy#E6Bb;t1l literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision b/buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..fd919b2eaf93633e8f19776978701e99aaa34bd5 GIT binary patch literal 4644 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 lf4$ZT(Dl$e5qI{Plj$`#0k95YYet literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision b/buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..9c07924826d4c6bc9134d5a77c09cf008f2e57f3 GIT binary patch literal 4625 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 W{p+TzNiN*HeDO0oU%vek=lvU%gZ&Kv literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision b/buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..e51dbf5f7ac4e495379640cff796a426f7d9fcb8 GIT binary patch literal 4667 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 literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision b/buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..6fbbd2bde979b9fc04bcdec0f2c8806628e5ed52 GIT binary patch literal 4641 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 b&o3@N@yL-onJvHm$yf0EFC0x>=Dhy^=@bR| literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision b/buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..86b7d0a3f85f70de6a284f409da68879cf721289 GIT binary patch literal 4682 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 c|F4s$%0HAW^)6S;#M%V$*<_PEg2RE4x7ytkO literal 0 HcmV?d00001 diff --git a/buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision b/buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..e2e79540164dcaf3afaf73bc55d52655bd35dc46 GIT binary patch literal 4627 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 ZKYROzYlW8&+1^FIJ+bHDKW}i}zW{br|Fi%A literal 0 HcmV?d00001 diff --git a/buildbox/guest-build-telegram.sh b/buildbox/guest-build-telegram.sh new file mode 100644 index 0000000000..11542dd0fa --- /dev/null +++ b/buildbox/guest-build-telegram.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +if [ "$1" == "hockeyapp" ]; then + FASTLANE_BUILD_CONFIGURATION="internalhockeyapp" +elif [ "$1" == "appstore" ]; then + FASTLANE_BUILD_CONFIGURATION="testflight_llc" +elif [ "$1" == "verify" ]; then + FASTLANE_BUILD_CONFIGURATION="testflight_llc" +else + echo "Unknown configuration $1" + exit 1 +fi + +security unlock-keychain -p telegram + +CERTS_PATH="codesigning_data/certs" +for f in $(ls "$CERTS_PATH"); do + fastlane run import_certificate "certificate_path:$CERTS_PATH/$f" keychain_name:login keychain_password:telegram log_output:true +done + +mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles" + +PROFILES_PATH="codesigning_data/profiles" +for f in $(ls "$PROFILES_PATH"); do + PROFILE_PATH="$PROFILES_PATH/$f" + uuid=`grep UUID -A1 -a "$PROFILE_PATH" | grep -io "[-A-F0-9]\{36\}"` + cp "$PROFILE_PATH" "$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" +done + +SOURCE_PATH="source" + +if [ -d "$SOURCE_PATH" ]; then + echo "$SOURCE_PATH must not exist" + exit 1 +fi + +mkdir -p "$SOURCE_PATH" + +echo "Unpacking files..." +tar -xzf "source.tar.gz" -C "$SOURCE_PATH" + +cd "$SOURCE_PATH" +fastlane "$FASTLANE_BUILD_CONFIGURATION" From d8765b1b3dd0737e599cd6d06541b201a1832000 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 15:48:14 +0400 Subject: [PATCH 15/27] Bump version --- NotificationContent/Info.plist | 2 +- NotificationService/Info.plist | 2 +- Share/Info.plist | 2 +- SiriIntents/Info.plist | 2 +- Telegram-iOS/Info.plist | 2 +- Watch/App/Info.plist | 2 +- Watch/Extension/Info.plist | 2 +- Widget/Info.plist | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/NotificationContent/Info.plist b/NotificationContent/Info.plist index fe3d0478fb..80cbbcd91c 100644 --- a/NotificationContent/Info.plist +++ b/NotificationContent/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 5ff53bd917..18eceb0557 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension diff --git a/Share/Info.plist b/Share/Info.plist index c5a9adb70a..2b77913fa3 100644 --- a/Share/Info.plist +++ b/Share/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension diff --git a/SiriIntents/Info.plist b/SiriIntents/Info.plist index 330c3508d8..9890849e7e 100644 --- a/SiriIntents/Info.plist +++ b/SiriIntents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension diff --git a/Telegram-iOS/Info.plist b/Telegram-iOS/Info.plist index 64bcb6a6e0..4d9d9b0fb5 100644 --- a/Telegram-iOS/Info.plist +++ b/Telegram-iOS/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleSignature ???? CFBundleURLTypes diff --git a/Watch/App/Info.plist b/Watch/App/Info.plist index f6b63768b0..b40b6bd78f 100644 --- a/Watch/App/Info.plist +++ b/Watch/App/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} UISupportedInterfaceOrientations diff --git a/Watch/Extension/Info.plist b/Watch/Extension/Info.plist index cff3e8511b..251de38f75 100644 --- a/Watch/Extension/Info.plist +++ b/Watch/Extension/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension diff --git a/Widget/Info.plist b/Widget/Info.plist index 2eff403b88..e2c70d7d60 100644 --- a/Widget/Info.plist +++ b/Widget/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 5.5 + 5.5.1 CFBundleVersion ${BUILD_NUMBER} NSExtension From 026049cc82c36607321d4b1767732dcd2f2ec78c Mon Sep 17 00:00:00 2001 From: Peter Iakovlev Date: Tue, 26 Mar 2019 17:15:48 +0400 Subject: [PATCH 16/27] Update localization --- Telegram-iOS/en.lproj/Localizable.strings | 5 ++++- submodules/Postbox | 2 +- submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- submodules/ffmpeg | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index 1e29b638f1..23fa8b41d0 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -3926,8 +3926,8 @@ Unused sets are archived when you add more."; "ChatList.DeleteSavedMessagesConfirmation" = "Are you sure you want to delete\nSaved Messages?"; "Undo.Undo" = "Undo"; -"Undo.MessagesDeleted" = "Messages deleted"; "Undo.ChatDeleted" = "Chat deleted"; +"Undo.ChatCleared" = "Chat cleared"; "Undo.SecretChatDeleted" = "Secret Chat deleted"; "Undo.LeftChannel" = "Left channel"; "Undo.LeftGroup" = "Left group"; @@ -4200,3 +4200,6 @@ Unused sets are archived when you add more."; "Settings.CheckPhoneNumberText" = "Keep your number up to date to ensure you can always log in to Telegram. [Learn more]()"; "Settings.KeepPhoneNumber" = "Keep %@"; "Settings.ChangePhoneNumber" = "Change Number"; + +"Undo.ChatDeletedForBothSides" = "Chat deleted for both sides"; +"Undo.MessagesDeletedForBothSides" = "Chat cleared for both sides"; diff --git a/submodules/Postbox b/submodules/Postbox index 4cb811a442..eca5668fc9 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit 4cb811a4422113791dd784327201fae925e4329c +Subproject commit eca5668fc9834be348e65edde3f4ec07eeffef0c diff --git a/submodules/TelegramCore b/submodules/TelegramCore index fbc5d0007a..fdcc098f80 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit fbc5d0007a5aa1eed96abdcd63132cfcbe1d1cd7 +Subproject commit fdcc098f8050834dd936f53a4476ac529abe6a58 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 9bc9084877..cf65440d8d 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 9bc90848770ae5301d0c260c75692ab1dae262c9 +Subproject commit cf65440d8d76b223c80fe273a19aef619c5a2828 diff --git a/submodules/ffmpeg b/submodules/ffmpeg index 4ea8057cf2..0495e4606b 160000 --- a/submodules/ffmpeg +++ b/submodules/ffmpeg @@ -1 +1 @@ -Subproject commit 4ea8057cf28b1872bdcf5539481195c75af8e1ed +Subproject commit 0495e4606b6a109f951f963c95b3d57ed5e031ff From a3d7fe300683463b137efc9d61dc93c7c25f0f85 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 17:18:13 +0400 Subject: [PATCH 17/27] Make app startup asynchronous --- Telegram-iOS/AppDelegate.swift | 237 ++++++++++++++------------ Telegram-iOS/ApplicationContext.swift | 5 +- submodules/Postbox | 2 +- submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- 5 files changed, 131 insertions(+), 117 deletions(-) diff --git a/Telegram-iOS/AppDelegate.swift b/Telegram-iOS/AppDelegate.swift index 125df21817..2f30bb5667 100644 --- a/Telegram-iOS/AppDelegate.swift +++ b/Telegram-iOS/AppDelegate.swift @@ -120,7 +120,7 @@ private enum QueuedWakeup: Int32 { case backgroundLocation } -private final class SharedApplicationContext { +final class SharedApplicationContext { let sharedContext: SharedAccountContext let notificationManager: SharedNotificationManager let wakeupManager: SharedWakeupManager @@ -571,125 +571,131 @@ private final class SharedApplicationContext { self.window?.rootViewController?.dismiss(animated: true, completion: nil) }) - // Move back to signal - let accountManager = AccountManager(basePath: rootPath + "/accounts-metadata") - let upgradeSemaphore = DispatchSemaphore(value: 0) - let _ = upgradedAccounts(accountManager: accountManager, rootPath: rootPath).start(completed: { - upgradeSemaphore.signal() - }) - upgradeSemaphore.wait() - - var initialPresentationDataAndSettings: InitialPresentationDataAndSettings? - let semaphore = DispatchSemaphore(value: 0) - let _ = currentPresentationDataAndSettings(accountManager: accountManager).start(next: { value in - initialPresentationDataAndSettings = value - semaphore.signal() - }) - semaphore.wait() - - let legacyBasePath = appGroupUrl.path - let legacyCache = LegacyCache(path: legacyBasePath + "/Caches") - - var setPresentationCall: ((PresentationCall?) -> Void)? - let sharedContext = SharedAccountContext(mainWindow: self.mainWindow, basePath: rootPath, accountManager: accountManager, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: networkArguments, rootPath: rootPath, legacyBasePath: legacyBasePath, legacyCache: legacyCache, apsNotificationToken: self.notificationTokenPromise.get() |> map(Optional.init), voipNotificationToken: self.voipTokenPromise.get() |> map(Optional.init), setNotificationCall: { call in - setPresentationCall?(call) - }, navigateToChat: { accountId, peerId, messageId in - self.openChatWhenReady(accountId: accountId, peerId: peerId, messageId: messageId) - }) - - let rawAccounts = sharedContext.activeAccounts - |> map { _, accounts, _ -> [Account] in - return accounts.map({ $0.1 }) + let accountManagerSignal = Signal { subscriber in + let accountManager = AccountManager(basePath: rootPath + "/accounts-metadata") + return upgradedAccounts(accountManager: accountManager, rootPath: rootPath).start(completed: { + subscriber.putNext(accountManager) + subscriber.putCompletion() + }) + return EmptyDisposable } - let _ = (sharedAccountInfos(accountManager: sharedContext.accountManager, accounts: rawAccounts) - |> deliverOn(Queue())).start(next: { infos in - storeAccountsData(rootPath: rootPath, accounts: infos) - }) - sharedContext.presentGlobalController = { [weak self] c, a in - guard let strongSelf = self else { - return + let sharedContextSignal = accountManagerSignal + |> deliverOnMainQueue + |> mapToSignal { accountManager -> Signal<(SharedApplicationContext, LoggingSettings), NoError> in + var initialPresentationDataAndSettings: InitialPresentationDataAndSettings? + let semaphore = DispatchSemaphore(value: 0) + let _ = currentPresentationDataAndSettings(accountManager: accountManager).start(next: { value in + initialPresentationDataAndSettings = value + semaphore.signal() + }) + semaphore.wait() + + let legacyBasePath = appGroupUrl.path + let legacyCache = LegacyCache(path: legacyBasePath + "/Caches") + + var setPresentationCall: ((PresentationCall?) -> Void)? + let sharedContext = SharedAccountContext(mainWindow: self.mainWindow, basePath: rootPath, accountManager: accountManager, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: networkArguments, rootPath: rootPath, legacyBasePath: legacyBasePath, legacyCache: legacyCache, apsNotificationToken: self.notificationTokenPromise.get() |> map(Optional.init), voipNotificationToken: self.voipTokenPromise.get() |> map(Optional.init), setNotificationCall: { call in + setPresentationCall?(call) + }, navigateToChat: { accountId, peerId, messageId in + self.openChatWhenReady(accountId: accountId, peerId: peerId, messageId: messageId) + }) + + let rawAccounts = sharedContext.activeAccounts + |> map { _, accounts, _ -> [Account] in + return accounts.map({ $0.1 }) } - strongSelf.mainWindow.present(c, on: .root) - } - sharedContext.presentCrossfadeController = { [weak self] in - guard let strongSelf = self else { - return - } - var exists = false - strongSelf.mainWindow.forEachViewController { controller in - if controller is ThemeSettingsCrossfadeController { - exists = true + let _ = (sharedAccountInfos(accountManager: sharedContext.accountManager, accounts: rawAccounts) + |> deliverOn(Queue())).start(next: { infos in + storeAccountsData(rootPath: rootPath, accounts: infos) + }) + + sharedContext.presentGlobalController = { [weak self] c, a in + guard let strongSelf = self else { + return + } + strongSelf.mainWindow.present(c, on: .root) + } + sharedContext.presentCrossfadeController = { [weak self] in + guard let strongSelf = self else { + return + } + var exists = false + strongSelf.mainWindow.forEachViewController { controller in + if controller is ThemeSettingsCrossfadeController { + exists = true + } + return true + } + + if !exists { + strongSelf.mainWindow.present(ThemeSettingsCrossfadeController(), on: .root) } - return true } - if !exists { - strongSelf.mainWindow.present(ThemeSettingsCrossfadeController(), on: .root) - } - } - - let notificationManager = SharedNotificationManager(episodeId: self.episodeId, application: application, clearNotificationsManager: clearNotificationsManager, inForeground: applicationBindings.applicationInForeground, accounts: sharedContext.activeAccounts |> map { primary, accounts, _ in accounts.map({ ($0.1, $0.1.id == primary?.id) }) }, pollLiveLocationOnce: { accountId in - let _ = (self.context.get() - |> filter { - return $0 != nil - } - |> take(1) - |> deliverOnMainQueue).start(next: { context in - if let context = context, context.context.account.id == accountId { - context.context.liveLocationManager?.pollOnce() + let notificationManager = SharedNotificationManager(episodeId: self.episodeId, application: application, clearNotificationsManager: clearNotificationsManager, inForeground: applicationBindings.applicationInForeground, accounts: sharedContext.activeAccounts |> map { primary, accounts, _ in accounts.map({ ($0.1, $0.1.id == primary?.id) }) }, pollLiveLocationOnce: { accountId in + let _ = (self.context.get() + |> filter { + return $0 != nil } + |> take(1) + |> deliverOnMainQueue).start(next: { context in + if let context = context, context.context.account.id == accountId { + context.context.liveLocationManager?.pollOnce() + } + }) }) - }) - setPresentationCall = { call in - notificationManager.setNotificationCall(call, strings: sharedContext.currentPresentationData.with({ $0 }).strings) - } - let liveLocationPolling = self.context.get() - |> mapToSignal { context -> Signal in - if let context = context, let liveLocationManager = context.context.liveLocationManager { - let accountId = context.context.account.id - return liveLocationManager.isPolling - |> distinctUntilChanged - |> map { value -> AccountRecordId? in - if value { - return accountId - } else { - return nil + setPresentationCall = { call in + notificationManager.setNotificationCall(call, strings: sharedContext.currentPresentationData.with({ $0 }).strings) + } + let liveLocationPolling = self.context.get() + |> mapToSignal { context -> Signal in + if let context = context, let liveLocationManager = context.context.liveLocationManager { + let accountId = context.context.account.id + return liveLocationManager.isPolling + |> distinctUntilChanged + |> map { value -> AccountRecordId? in + if value { + return accountId + } else { + return nil + } } + } else { + return .single(nil) } - } else { - return .single(nil) + } + let watchTasks = self.context.get() + |> mapToSignal { context -> Signal in + if let context = context, let watchManager = context.context.watchManager { + let accountId = context.context.account.id + let runningTasks: Signal = .single(nil) + |> then(watchManager.runningTasks) + return runningTasks + |> distinctUntilChanged + |> map { value -> AccountRecordId? in + if let value = value, value.running { + return accountId + } else { + return nil + } + } + |> distinctUntilChanged + } else { + return .single(nil) + } + } + let wakeupManager = SharedWakeupManager(beginBackgroundTask: { name, expiration in application.beginBackgroundTask(withName: name, expirationHandler: expiration) }, endBackgroundTask: { id in application.endBackgroundTask(id) }, backgroundTimeRemaining: { application.backgroundTimeRemaining }, activeAccounts: sharedContext.activeAccounts |> map { ($0.0, $0.1.map { ($0.0, $0.1) }) }, liveLocationPolling: liveLocationPolling, watchTasks: watchTasks, inForeground: applicationBindings.applicationInForeground, hasActiveAudioSession: self.hasActiveAudioSession.get(), notificationManager: notificationManager, mediaManager: sharedContext.mediaManager, callManager: sharedContext.callManager, accountUserInterfaceInUse: { id in + return sharedContext.accountUserInterfaceInUse(id) + }) + let sharedApplicationContext = SharedApplicationContext(sharedContext: sharedContext, notificationManager: notificationManager, wakeupManager: wakeupManager) + sharedApplicationContext.sharedContext.mediaManager.overlayMediaManager.attachOverlayMediaController(sharedApplicationContext.overlayMediaController) + + return accountManager.transaction { transaction -> (SharedApplicationContext, LoggingSettings) in + return (sharedApplicationContext, transaction.getSharedData(SharedDataKeys.loggingSettings) as? LoggingSettings ?? LoggingSettings.defaultSettings) } } - let watchTasks = self.context.get() - |> mapToSignal { context -> Signal in - if let context = context, let watchManager = context.context.watchManager { - let accountId = context.context.account.id - let runningTasks: Signal = .single(nil) - |> then(watchManager.runningTasks) - return runningTasks - |> distinctUntilChanged - |> map { value -> AccountRecordId? in - if let value = value, value.running { - return accountId - } else { - return nil - } - } - |> distinctUntilChanged - } else { - return .single(nil) - } - } - let wakeupManager = SharedWakeupManager(beginBackgroundTask: { name, expiration in application.beginBackgroundTask(withName: name, expirationHandler: expiration) }, endBackgroundTask: { id in application.endBackgroundTask(id) }, backgroundTimeRemaining: { application.backgroundTimeRemaining }, activeAccounts: sharedContext.activeAccounts |> map { ($0.0, $0.1.map { ($0.0, $0.1) }) }, liveLocationPolling: liveLocationPolling, watchTasks: watchTasks, inForeground: applicationBindings.applicationInForeground, hasActiveAudioSession: hasActiveAudioSession.get(), notificationManager: notificationManager, mediaManager: sharedContext.mediaManager, callManager: sharedContext.callManager, accountUserInterfaceInUse: { id in - return sharedContext.accountUserInterfaceInUse(id) - }) - let sharedApplicationContext = SharedApplicationContext(sharedContext: sharedContext, notificationManager: notificationManager, wakeupManager: wakeupManager) - sharedApplicationContext.sharedContext.mediaManager.overlayMediaManager.attachOverlayMediaController(sharedApplicationContext.overlayMediaController) - self.sharedContextPromise.set( - accountManager.transaction { transaction -> (SharedApplicationContext, LoggingSettings) in - return (sharedApplicationContext, transaction.getSharedData(SharedDataKeys.loggingSettings) as? LoggingSettings ?? LoggingSettings.defaultSettings) - } + self.sharedContextPromise.set(sharedContextSignal |> mapToSignal { sharedApplicationContext, loggingSettings -> Signal in Logger.shared.logToFile = loggingSettings.logToFile Logger.shared.logToConsole = loggingSettings.logToConsole @@ -793,7 +799,7 @@ private final class SharedApplicationContext { |> map { accountAndSettings -> AuthorizedApplicationContext? in return accountAndSettings.flatMap { account, limitsConfiguration, callListSettings in let context = AccountContext(sharedContext: sharedApplicationContext.sharedContext, account: account, limitsConfiguration: limitsConfiguration) - return AuthorizedApplicationContext(mainWindow: self.mainWindow, watchManagerArguments: watchManagerArgumentsPromise.get(), context: context, accountManager: sharedApplicationContext.sharedContext.accountManager, showCallsTab: callListSettings.showTab, reinitializedNotificationSettings: { + return AuthorizedApplicationContext(sharedApplicationContext: sharedApplicationContext, mainWindow: self.mainWindow, watchManagerArguments: watchManagerArgumentsPromise.get(), context: context, accountManager: sharedApplicationContext.sharedContext.accountManager, showCallsTab: callListSettings.showTab, reinitializedNotificationSettings: { let _ = (self.context.get() |> take(1) |> deliverOnMainQueue).start(next: { context in @@ -932,7 +938,7 @@ private final class SharedApplicationContext { } return true }) - self.mainWindow.topLevelOverlayControllers = [sharedApplicationContext.overlayMediaController, context.notificationController] + self.mainWindow.topLevelOverlayControllers = [context.sharedApplicationContext.overlayMediaController, context.notificationController] var authorizeNotifications = true if #available(iOS 10.0, *) { authorizeNotifications = false @@ -979,7 +985,10 @@ private final class SharedApplicationContext { })) self.watchCommunicationManagerPromise.set(watchCommunicationManager(context: self.context, allowBackgroundTimeExtension: { timeout in - wakeupManager.allowBackgroundTimeExtension(timeout: timeout) + let _ = (self.sharedContextPromise.get() + |> take(1)).start(next: { sharedContext in + sharedContext.wakeupManager.allowBackgroundTimeExtension(timeout: timeout) + }) })) let _ = self.watchCommunicationManagerPromise.get().start(next: { manager in if let manager = manager { @@ -1059,8 +1068,10 @@ private final class SharedApplicationContext { } })) } - let presentationData = sharedContext.currentPresentationData.with { $0 } - strongSelf.mainWindow.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: alert.title, text: alert.message ?? "", actions: actions), on: .root) + if let sharedContext = strongSelf.contextValue?.context.sharedContext { + let presentationData = sharedContext.currentPresentationData.with { $0 } + strongSelf.mainWindow.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: alert.title, text: alert.message ?? "", actions: actions), on: .root) + } } }) diff --git a/Telegram-iOS/ApplicationContext.swift b/Telegram-iOS/ApplicationContext.swift index 2edd30eac3..8c81c96174 100644 --- a/Telegram-iOS/ApplicationContext.swift +++ b/Telegram-iOS/ApplicationContext.swift @@ -46,6 +46,7 @@ private struct PasscodeState: Equatable { } final class AuthorizedApplicationContext { + let sharedApplicationContext: SharedApplicationContext let mainWindow: Window1 let lockedCoveringView: LockedWindowCoveringView @@ -99,7 +100,9 @@ final class AuthorizedApplicationContext { private var showCallsTabDisposable: Disposable? private var enablePostboxTransactionsDiposable: Disposable? - init(mainWindow: Window1, watchManagerArguments: Signal, context: AccountContext, accountManager: AccountManager, showCallsTab: Bool, reinitializedNotificationSettings: @escaping () -> Void) { + init(sharedApplicationContext: SharedApplicationContext, mainWindow: Window1, watchManagerArguments: Signal, context: AccountContext, accountManager: AccountManager, showCallsTab: Bool, reinitializedNotificationSettings: @escaping () -> Void) { + self.sharedApplicationContext = sharedApplicationContext + setupLegacyComponents(context: context) let presentationData = context.sharedContext.currentPresentationData.with { $0 } diff --git a/submodules/Postbox b/submodules/Postbox index 5debb55eb0..eca5668fc9 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit 5debb55eb0cd0154b866857476bdfb8122308664 +Subproject commit eca5668fc9834be348e65edde3f4ec07eeffef0c diff --git a/submodules/TelegramCore b/submodules/TelegramCore index eb72b51295..fdcc098f80 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit eb72b51295e0b0b937d4c0af59adb4fdce4d67a7 +Subproject commit fdcc098f8050834dd936f53a4476ac529abe6a58 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index ae83518e5a..40ad8ff628 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit ae83518e5a5fc2b79a9425891ad33962c3066ff9 +Subproject commit 40ad8ff62822372c08d7b4cb726316e5d0e5ac71 From 7ba7a3a37fa7ebe9ae44dace04f3391b3aa5e64e Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 17:29:57 +0400 Subject: [PATCH 18/27] Update localization --- Telegram-iOS/en.lproj/Localizable.strings | 2 +- submodules/TelegramUI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index 23fa8b41d0..8040c12726 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -3928,6 +3928,7 @@ Unused sets are archived when you add more."; "Undo.Undo" = "Undo"; "Undo.ChatDeleted" = "Chat deleted"; "Undo.ChatCleared" = "Chat cleared"; +"Undo.ChatClearedForBothSides" = "Chat cleared for both sides"; "Undo.SecretChatDeleted" = "Secret Chat deleted"; "Undo.LeftChannel" = "Left channel"; "Undo.LeftGroup" = "Left group"; @@ -4202,4 +4203,3 @@ Unused sets are archived when you add more."; "Settings.ChangePhoneNumber" = "Change Number"; "Undo.ChatDeletedForBothSides" = "Chat deleted for both sides"; -"Undo.MessagesDeletedForBothSides" = "Chat cleared for both sides"; diff --git a/submodules/TelegramUI b/submodules/TelegramUI index cf65440d8d..44ccb031eb 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit cf65440d8d76b223c80fe273a19aef619c5a2828 +Subproject commit 44ccb031eb2ee52628e6f2710a178bdb4f3041b5 From d8d136549642e04cf8585a168c92e0b548013538 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 18:06:29 +0400 Subject: [PATCH 19/27] Add signingCertificate option --- fastlane/Fastfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index f75068ddbd..f8d9f1f6fa 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -13,6 +13,7 @@ app_identifier_llc = [ base_app_identifier_llc + ".watchkitapp.watchkitextension", base_app_identifier_llc + ".NotificationService" ] +signing_identity_llc = "iPhone Distribution: Digital Fortress LLC (C67CF9S4VU)" lane :do_build_app do |options| gym( @@ -31,7 +32,8 @@ lane :do_build_app do |options| iCloudContainerEnvironment: "Production", provisioningProfiles: options[:provisioningProfiles], stripSwiftSymbols: true, - uploadBitcode: false + uploadBitcode: false, + signingCertificate: options[:signingCertificate] } ) end @@ -47,6 +49,7 @@ lane :build_for_appstore do |options| export_method: "app-store", build_number: commit_count_string, commit_id: commit[:commit_hash], + signingCertificate: signing_identity_llc, provisioningProfiles: { base_app_identifier_llc => "match AppStore " + base_app_identifier_llc, base_app_identifier_llc + ".Share" => "match AppStore " + base_app_identifier_llc + ".Share", From f79f24b9de8d40c065257c2e037ecc19f8201213 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 18:12:15 +0400 Subject: [PATCH 20/27] Added temporary build data --- buildbox/build-telegram.sh | 15 ++++++++++++--- .../Config/AppStoreLLC/Config.xcconfig | 8 ++++++++ .../fake-shared/Config/AppStoreLLC/Data.xcconfig | 1 + buildbox/fake-shared/fastlane/Fastfile | 0 buildbox/guest-build-telegram.sh | 9 ++++----- 5 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 buildbox/fake-shared/Config/AppStoreLLC/Config.xcconfig create mode 100644 buildbox/fake-shared/Config/AppStoreLLC/Data.xcconfig create mode 100644 buildbox/fake-shared/fastlane/Fastfile diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh index 6c164e57c1..8d60a611e3 100644 --- a/buildbox/build-telegram.sh +++ b/buildbox/build-telegram.sh @@ -25,7 +25,11 @@ if [ ! -d "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" ]; then exit 1 fi -tar czf "$BUILDBOX_DIR/transient-data/source.tar.gz" --exclude "$BUILDBOX_DIR" . +BASE_DIR=$(pwd) +SOURCE_DIR=$(basename "$BASE_DIR") +cd .. +tar cf "$SOURCE_DIR/$BUILDBOX_DIR/transient-data/source.tar" --exclude "$SOURCE_DIR/$BUILDBOX_DIR" "$SOURCE_DIR" +cd "$BASE_DIR" VM_BASE_NAME="macos10_14_3_Xcode10_1" @@ -44,8 +48,13 @@ prlctl snapshot-switch "$VM_NAME" -i "$SNAPSHOT_ID" VM_IP=$(prlctl exec "$VM_NAME" "ifconfig | grep inet | grep broadcast | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -1 | tr '\n' '\0'") scp -pr "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" telegram@"$VM_IP":codesigning_data -scp -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared -scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar.gz" telegram@"$VM_IP": + +if [ "$BUILD_CONFIGURATION" == "verify" ]; then + scp -pr "$BUILDBOX_DIR/fake-shared" telegram@"$VM_IP":telegram-ios-shared +else + scp -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared +fi +scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar" telegram@"$VM_IP": ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" diff --git a/buildbox/fake-shared/Config/AppStoreLLC/Config.xcconfig b/buildbox/fake-shared/Config/AppStoreLLC/Config.xcconfig new file mode 100644 index 0000000000..d381ccc3d0 --- /dev/null +++ b/buildbox/fake-shared/Config/AppStoreLLC/Config.xcconfig @@ -0,0 +1,8 @@ +APP_NAME=Telegram +APP_BUNDLE_ID=ph.telegra.Telegraph +APP_SPECIFIC_URL_SCHEME=tgapp + +GLOBAL_CONSTANTS = APP_CONFIG_IS_INTERNAL_BUILD=false APP_CONFIG_IS_APPSTORE_BUILD=true APP_CONFIG_APPSTORE_ID=686449807 APP_SPECIFIC_URL_SCHEME="\"$(APP_SPECIFIC_URL_SCHEME)\"" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GLOBAL_CONSTANTS) + +#include "Data.xcconfig" diff --git a/buildbox/fake-shared/Config/AppStoreLLC/Data.xcconfig b/buildbox/fake-shared/Config/AppStoreLLC/Data.xcconfig new file mode 100644 index 0000000000..935e871569 --- /dev/null +++ b/buildbox/fake-shared/Config/AppStoreLLC/Data.xcconfig @@ -0,0 +1 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_CONFIG_DATA="\"\"" \ No newline at end of file diff --git a/buildbox/fake-shared/fastlane/Fastfile b/buildbox/fake-shared/fastlane/Fastfile new file mode 100644 index 0000000000..e69de29bb2 diff --git a/buildbox/guest-build-telegram.sh b/buildbox/guest-build-telegram.sh index 11542dd0fa..9f0c7fa272 100644 --- a/buildbox/guest-build-telegram.sh +++ b/buildbox/guest-build-telegram.sh @@ -5,13 +5,14 @@ if [ "$1" == "hockeyapp" ]; then elif [ "$1" == "appstore" ]; then FASTLANE_BUILD_CONFIGURATION="testflight_llc" elif [ "$1" == "verify" ]; then - FASTLANE_BUILD_CONFIGURATION="testflight_llc" + FASTLANE_BUILD_CONFIGURATION="build_for_appstore" else echo "Unknown configuration $1" exit 1 fi security unlock-keychain -p telegram +security set-keychain-settings -lut 7200 CERTS_PATH="codesigning_data/certs" for f in $(ls "$CERTS_PATH"); do @@ -27,17 +28,15 @@ for f in $(ls "$PROFILES_PATH"); do cp "$PROFILE_PATH" "$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" done -SOURCE_PATH="source" +SOURCE_PATH="telegram-ios" if [ -d "$SOURCE_PATH" ]; then echo "$SOURCE_PATH must not exist" exit 1 fi -mkdir -p "$SOURCE_PATH" - echo "Unpacking files..." -tar -xzf "source.tar.gz" -C "$SOURCE_PATH" +tar -xf "source.tar" cd "$SOURCE_PATH" fastlane "$FASTLANE_BUILD_CONFIGURATION" From 672321b42e9e49f1c8212391dd064a8303fa1c1a Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 26 Mar 2019 22:50:33 +0400 Subject: [PATCH 21/27] Update submodules --- Telegram-iOS/ApplicationContext.swift | 16 +++++++++++++--- submodules/Postbox | 2 +- submodules/TelegramCore | 2 +- submodules/TelegramUI | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Telegram-iOS/ApplicationContext.swift b/Telegram-iOS/ApplicationContext.swift index 8c81c96174..e1d2a9a135 100644 --- a/Telegram-iOS/ApplicationContext.swift +++ b/Telegram-iOS/ApplicationContext.swift @@ -698,10 +698,20 @@ final class AuthorizedApplicationContext { self.displayAlertsDisposable = (context.account.stateManager.displayAlerts |> deliverOnMainQueue).start(next: { [weak self] alerts in - if let strongSelf = self{ - for text in alerts { + if let strongSelf = self { + for (text, isDropAuth) in alerts { let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } - let controller = textAlertController(context: strongSelf.context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]) + let actions: [TextAlertAction] + if isDropAuth { + actions = [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_Cancel, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.LogoutOptions_LogOut, action: { + if let strongSelf = self { + let _ = logoutFromAccount(id: strongSelf.context.account.id, accountManager: strongSelf.context.sharedContext.accountManager).start() + } + })] + } else { + actions = [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})] + } + let controller = textAlertController(context: strongSelf.context, title: nil, text: text, actions: actions) (strongSelf.rootController.viewControllers.last as? ViewController)?.present(controller, in: .window(.root)) } } diff --git a/submodules/Postbox b/submodules/Postbox index eca5668fc9..a19e86b883 160000 --- a/submodules/Postbox +++ b/submodules/Postbox @@ -1 +1 @@ -Subproject commit eca5668fc9834be348e65edde3f4ec07eeffef0c +Subproject commit a19e86b883253356228cd6aa0cb3162b3c2bb61a diff --git a/submodules/TelegramCore b/submodules/TelegramCore index fdcc098f80..6961ceda37 160000 --- a/submodules/TelegramCore +++ b/submodules/TelegramCore @@ -1 +1 @@ -Subproject commit fdcc098f8050834dd936f53a4476ac529abe6a58 +Subproject commit 6961ceda3746792e459cd32565228d372e63df93 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 44ccb031eb..6b34f748d7 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 44ccb031eb2ee52628e6f2710a178bdb4f3041b5 +Subproject commit 6b34f748d7e5c788aeeacae7863b1ed8b2e8307a From dcefbd3e49ce22322975f53db606b64ec82bfedf Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 26 Mar 2019 23:08:43 +0200 Subject: [PATCH 22/27] Update submodules --- submodules/LegacyComponents | 2 +- submodules/TelegramUI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/LegacyComponents b/submodules/LegacyComponents index 0d44c9e101..443e039839 160000 --- a/submodules/LegacyComponents +++ b/submodules/LegacyComponents @@ -1 +1 @@ -Subproject commit 0d44c9e1016591c4cfdf1886e743b46acc3646fe +Subproject commit 443e039839ba5bf4a54ca56e9ebb70b2224a9662 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 6b34f748d7..58eb595460 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 6b34f748d7e5c788aeeacae7863b1ed8b2e8307a +Subproject commit 58eb595460dc97ecdb47f0c840df1cf755740dd9 From ce753291039716eea83fc3a66c663db1b508042c Mon Sep 17 00:00:00 2001 From: Peter <> Date: Thu, 28 Mar 2019 17:10:05 +0400 Subject: [PATCH 23/27] Update build scripts --- buildbox/build-telegram.sh | 38 +++++++++++++++++++++++++++----- buildbox/guest-build-telegram.sh | 18 +++++++++++---- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh index 8d60a611e3..e7de75456e 100644 --- a/buildbox/build-telegram.sh +++ b/buildbox/build-telegram.sh @@ -3,6 +3,10 @@ set -e set -x +if [ `which cleanup-telegram-build-vms.sh` ]; then + cleanup-telegram-build-vms.sh +fi + BUILDBOX_DIR="buildbox" mkdir -p "$BUILDBOX_DIR/transient-data" @@ -20,14 +24,35 @@ else exit 1 fi +BASE_DIR=$(pwd) + +if [ "$BUILD_CONFIGURATION" == "hockeyapp" ] || [ "$BUILD_CONFIGURATION" == "appstore" ]; then + if [ ! `which setup-telegram-build.sh` ]; then + echo "setup-telegram-build.sh not found in PATH $PATH" + exit 1 + fi + source `which setup-telegram-build.sh` + setup_telegram_build "$BUILD_CONFIGURATION" "$BASE_DIR/$BUILDBOX_DIR/transient-data" + if [ "$SETUP_TELEGRAM_BUILD_VERSION" != "$BUILD_TELEGRAM_VERSION" ]; then + echo "setup-telegram-build.sh script version doesn't match" + exit 1 + fi + if [ "$BUILD_CONFIGURATION" == "appstore" ]; then + if [ -z "$TELEGRAM_BUILD_APPSTORE_PASSWORD" ]; then + echo "TELEGRAM_BUILD_APPSTORE_PASSWORD is not set" + exit 1 + fi + fi +fi + if [ ! -d "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" ]; then echo "$BUILDBOX_DIR/$CODESIGNING_SUBPATH does not exist" exit 1 fi -BASE_DIR=$(pwd) SOURCE_DIR=$(basename "$BASE_DIR") cd .. +rm -f "$SOURCE_DIR/$BUILDBOX_DIR/transient-data/source.tar" tar cf "$SOURCE_DIR/$BUILDBOX_DIR/transient-data/source.tar" --exclude "$SOURCE_DIR/$BUILDBOX_DIR" "$SOURCE_DIR" cd "$BASE_DIR" @@ -40,7 +65,8 @@ if [ -z "$SNAPSHOT_ID" ]; then exit 1 fi -VM_NAME="$VM_BASE_NAME-$(openssl rand -hex 10)" +PROCESS_ID="$$" +VM_NAME="$VM_BASE_NAME-$(openssl rand -hex 10)-build-telegram-$PROCESS_ID" prlctl clone "$VM_BASE_NAME" --name "$VM_NAME" prlctl snapshot-switch "$VM_NAME" -i "$SNAPSHOT_ID" @@ -56,7 +82,9 @@ else fi scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar" telegram@"$VM_IP": -ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" +ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "export TELEGRAM_BUILD_APPSTORE_PASSWORD=$TELEGRAM_BUILD_APPSTORE_PASSWORD; bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" -#prlctl stop "$VM_NAME" --kill -#prlctl delete "$VM_NAME" +scp -pr telegram@"$VM_IP":telegram-ios/Telegram-iOS-AppStoreLLC.ipa ./ + +prlctl stop "$VM_NAME" --kill +prlctl delete "$VM_NAME" diff --git a/buildbox/guest-build-telegram.sh b/buildbox/guest-build-telegram.sh index 9f0c7fa272..fc4f1c31fc 100644 --- a/buildbox/guest-build-telegram.sh +++ b/buildbox/guest-build-telegram.sh @@ -4,6 +4,11 @@ if [ "$1" == "hockeyapp" ]; then FASTLANE_BUILD_CONFIGURATION="internalhockeyapp" elif [ "$1" == "appstore" ]; then FASTLANE_BUILD_CONFIGURATION="testflight_llc" + if [ -z "$TELEGRAM_BUILD_APPSTORE_PASSWORD" ]; then + echo "TELEGRAM_BUILD_APPSTORE_PASSWORD is not set" + exit 1 + fi + FASTLANE_PASSWORD="$TELEGRAM_BUILD_APPSTORE_PASSWORD" elif [ "$1" == "verify" ]; then FASTLANE_BUILD_CONFIGURATION="build_for_appstore" else @@ -11,12 +16,17 @@ else exit 1 fi -security unlock-keychain -p telegram -security set-keychain-settings -lut 7200 +MY_KEYCHAIN="temp.keychain" +MY_KEYCHAIN_PASSWORD="secret" + +security create-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" +security list-keychains -d user -s "$MY_KEYCHAIN" $(security list-keychains -d user | sed s/\"//g) +security set-keychain-settings "$MY_KEYCHAIN" +security unlock-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" CERTS_PATH="codesigning_data/certs" for f in $(ls "$CERTS_PATH"); do - fastlane run import_certificate "certificate_path:$CERTS_PATH/$f" keychain_name:login keychain_password:telegram log_output:true + fastlane run import_certificate "certificate_path:$CERTS_PATH/$f" keychain_name:"$MY_KEYCHAIN" keychain_password:"$MY_KEYCHAIN_PASSWORD" log_output:true done mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles" @@ -39,4 +49,4 @@ echo "Unpacking files..." tar -xf "source.tar" cd "$SOURCE_PATH" -fastlane "$FASTLANE_BUILD_CONFIGURATION" +FASTLANE_PASSWORD="$FASTLANE_PASSWORD" fastlane "$FASTLANE_BUILD_CONFIGURATION" From f2a16e2956714076cd96056136ed32654dab4578 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Thu, 28 Mar 2019 17:13:07 +0400 Subject: [PATCH 24/27] Update submodules --- submodules/LegacyComponents | 2 +- submodules/TelegramUI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/LegacyComponents b/submodules/LegacyComponents index 0d44c9e101..443e039839 160000 --- a/submodules/LegacyComponents +++ b/submodules/LegacyComponents @@ -1 +1 @@ -Subproject commit 0d44c9e1016591c4cfdf1886e743b46acc3646fe +Subproject commit 443e039839ba5bf4a54ca56e9ebb70b2224a9662 diff --git a/submodules/TelegramUI b/submodules/TelegramUI index 6b34f748d7..58eb595460 160000 --- a/submodules/TelegramUI +++ b/submodules/TelegramUI @@ -1 +1 @@ -Subproject commit 6b34f748d7e5c788aeeacae7863b1ed8b2e8307a +Subproject commit 58eb595460dc97ecdb47f0c840df1cf755740dd9 From e79ea9f9557c5eedf6eae3dcea18190fd129acbf Mon Sep 17 00:00:00 2001 From: Peter <> Date: Thu, 28 Mar 2019 18:06:20 +0400 Subject: [PATCH 25/27] Update CI --- .gitlab-ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c3655b428..df98411938 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,28 +8,26 @@ variables: internal: tags: - - ios + - ios_internal stage: build only: - master except: - tags script: - - sh ~/ios-prepare-build.sh $CI_PROJECT_DIR/.. - - fastlane internalhockeyapp + - sh buildbox/build-telegram.sh hockeyapp environment: name: internal beta_testflight: tags: - - ios + - ios_beta stage: build only: - beta except: - tags script: - - sh ~/ios-prepare-build.sh $CI_PROJECT_DIR/.. - - fastlane testflight_llc + - sh buildbox/build-telegram.sh appstore environment: name: testflight_llc From ac039ed876fb8c21bff0039da57f50a0bdeaee6a Mon Sep 17 00:00:00 2001 From: Peter <> Date: Thu, 28 Mar 2019 18:12:25 +0400 Subject: [PATCH 26/27] Fix build script --- buildbox/build-telegram.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh index e7de75456e..eda1c4d3ac 100644 --- a/buildbox/build-telegram.sh +++ b/buildbox/build-telegram.sh @@ -1,7 +1,8 @@ #!/bin/sh set -e -set -x + +BUILD_TELEGRAM_VERSION="1" if [ `which cleanup-telegram-build-vms.sh` ]; then cleanup-telegram-build-vms.sh From 5368b85079a00caac4387333b3fc3a279572766c Mon Sep 17 00:00:00 2001 From: Peter <> Date: Thu, 28 Mar 2019 18:16:01 +0400 Subject: [PATCH 27/27] Fix build script --- buildbox/build-telegram.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh index eda1c4d3ac..f704e244f0 100644 --- a/buildbox/build-telegram.sh +++ b/buildbox/build-telegram.sh @@ -74,18 +74,18 @@ prlctl snapshot-switch "$VM_NAME" -i "$SNAPSHOT_ID" VM_IP=$(prlctl exec "$VM_NAME" "ifconfig | grep inet | grep broadcast | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -1 | tr '\n' '\0'") -scp -pr "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" telegram@"$VM_IP":codesigning_data +scp -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -pr "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" telegram@"$VM_IP":codesigning_data if [ "$BUILD_CONFIGURATION" == "verify" ]; then - scp -pr "$BUILDBOX_DIR/fake-shared" telegram@"$VM_IP":telegram-ios-shared + scp -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -pr "$BUILDBOX_DIR/fake-shared" telegram@"$VM_IP":telegram-ios-shared else - scp -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared + scp -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared fi -scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar" telegram@"$VM_IP": +scp -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar" telegram@"$VM_IP": -ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "export TELEGRAM_BUILD_APPSTORE_PASSWORD=$TELEGRAM_BUILD_APPSTORE_PASSWORD; bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" +ssh -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null telegram@"$VM_IP" -o ServerAliveInterval=60 -t "export TELEGRAM_BUILD_APPSTORE_PASSWORD=$TELEGRAM_BUILD_APPSTORE_PASSWORD; bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" -scp -pr telegram@"$VM_IP":telegram-ios/Telegram-iOS-AppStoreLLC.ipa ./ +scp -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -pr telegram@"$VM_IP":telegram-ios/Telegram-iOS-AppStoreLLC.ipa ./ prlctl stop "$VM_NAME" --kill prlctl delete "$VM_NAME"