From c6fcfb63fd54a3d998e66592abc1165642b49860 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 14 Nov 2018 19:42:03 -0200 Subject: [PATCH] [WIP] New Authentication layout (#536) New Authentication layout --- .../app/src/main/res/drawable-hdpi/eye.png | Bin 0 -> 966 bytes .../src/main/res/drawable-hdpi/eye_slash.png | Bin 0 -> 1384 bytes .../src/main/res/drawable-hdpi/hashtag.png | Bin 222 -> 187 bytes .../main/res/drawable-hdpi/icon_facebook.png | Bin 0 -> 638 bytes .../main/res/drawable-hdpi/icon_github.png | Bin 0 -> 1421 bytes .../main/res/drawable-hdpi/icon_gitlab.png | Bin 0 -> 1589 bytes .../main/res/drawable-hdpi/icon_google.png | Bin 0 -> 1378 bytes .../main/res/drawable-hdpi/icon_linkedin.png | Bin 0 -> 797 bytes .../main/res/drawable-hdpi/icon_meteor.png | Bin 0 -> 2170 bytes .../main/res/drawable-hdpi/icon_twitter.png | Bin 0 -> 1209 bytes .../app/src/main/res/drawable-hdpi/key.png | Bin 0 -> 1310 bytes .../app/src/main/res/drawable-hdpi/lock.png | Bin 559 -> 484 bytes .../app/src/main/res/drawable-hdpi/mail.png | Bin 0 -> 643 bytes .../src/main/res/drawable-hdpi/mention.png | Bin 981 -> 1096 bytes .../app/src/main/res/drawable-hdpi/more.png | Bin 0 -> 214 bytes .../src/main/res/drawable-hdpi/options.png | Bin 0 -> 1665 bytes .../drawable-hdpi/subscription_hashtag.png | Bin 174 -> 0 bytes .../res/drawable-hdpi/subscription_lock.png | Bin 335 -> 0 bytes .../app/src/main/res/drawable-hdpi/user.png | Bin 0 -> 982 bytes .../app/src/main/res/drawable-mdpi/eye.png | Bin 0 -> 631 bytes .../src/main/res/drawable-mdpi/eye_slash.png | Bin 0 -> 820 bytes .../src/main/res/drawable-mdpi/hashtag.png | Bin 142 -> 147 bytes .../main/res/drawable-mdpi/icon_facebook.png | Bin 0 -> 498 bytes .../main/res/drawable-mdpi/icon_github.png | Bin 0 -> 914 bytes .../main/res/drawable-mdpi/icon_gitlab.png | Bin 0 -> 995 bytes .../main/res/drawable-mdpi/icon_google.png | Bin 0 -> 928 bytes .../main/res/drawable-mdpi/icon_linkedin.png | Bin 0 -> 595 bytes .../main/res/drawable-mdpi/icon_meteor.png | Bin 0 -> 1258 bytes .../main/res/drawable-mdpi/icon_twitter.png | Bin 0 -> 774 bytes .../app/src/main/res/drawable-mdpi/key.png | Bin 0 -> 787 bytes .../app/src/main/res/drawable-mdpi/lock.png | Bin 408 -> 351 bytes .../app/src/main/res/drawable-mdpi/mail.png | Bin 0 -> 445 bytes .../src/main/res/drawable-mdpi/mention.png | Bin 618 -> 709 bytes .../app/src/main/res/drawable-mdpi/more.png | Bin 0 -> 143 bytes .../src/main/res/drawable-mdpi/options.png | Bin 0 -> 987 bytes .../drawable-mdpi/subscription_hashtag.png | Bin 118 -> 0 bytes .../res/drawable-mdpi/subscription_lock.png | Bin 198 -> 0 bytes .../app/src/main/res/drawable-mdpi/user.png | Bin 0 -> 599 bytes .../app/src/main/res/drawable-xhdpi/eye.png | Bin 0 -> 1307 bytes .../src/main/res/drawable-xhdpi/eye_slash.png | Bin 0 -> 1886 bytes .../src/main/res/drawable-xhdpi/hashtag.png | Bin 224 -> 227 bytes .../main/res/drawable-xhdpi/icon_facebook.png | Bin 0 -> 775 bytes .../main/res/drawable-xhdpi/icon_github.png | Bin 0 -> 1997 bytes .../main/res/drawable-xhdpi/icon_gitlab.png | Bin 0 -> 2209 bytes .../main/res/drawable-xhdpi/icon_google.png | Bin 0 -> 1852 bytes .../main/res/drawable-xhdpi/icon_linkedin.png | Bin 0 -> 998 bytes .../main/res/drawable-xhdpi/icon_meteor.png | Bin 0 -> 3082 bytes .../main/res/drawable-xhdpi/icon_twitter.png | Bin 0 -> 1591 bytes .../app/src/main/res/drawable-xhdpi/key.png | Bin 0 -> 1760 bytes .../app/src/main/res/drawable-xhdpi/lock.png | Bin 659 -> 658 bytes .../app/src/main/res/drawable-xhdpi/mail.png | Bin 0 -> 853 bytes .../src/main/res/drawable-xhdpi/mention.png | Bin 1462 -> 1580 bytes .../app/src/main/res/drawable-xhdpi/more.png | Bin 0 -> 226 bytes .../src/main/res/drawable-xhdpi/options.png | Bin 0 -> 1937 bytes .../drawable-xhdpi/subscription_hashtag.png | Bin 147 -> 0 bytes .../res/drawable-xhdpi/subscription_lock.png | Bin 351 -> 0 bytes .../app/src/main/res/drawable-xhdpi/user.png | Bin 0 -> 1391 bytes .../app/src/main/res/drawable-xxhdpi/eye.png | Bin 0 -> 2067 bytes .../main/res/drawable-xxhdpi/eye_slash.png | Bin 0 -> 2886 bytes .../src/main/res/drawable-xxhdpi/hashtag.png | Bin 313 -> 307 bytes .../res/drawable-xxhdpi/icon_facebook.png | Bin 0 -> 1104 bytes .../main/res/drawable-xxhdpi/icon_github.png | Bin 0 -> 3032 bytes .../main/res/drawable-xxhdpi/icon_gitlab.png | Bin 0 -> 3435 bytes .../main/res/drawable-xxhdpi/icon_google.png | Bin 0 -> 2844 bytes .../res/drawable-xxhdpi/icon_linkedin.png | Bin 0 -> 1492 bytes .../main/res/drawable-xxhdpi/icon_meteor.png | Bin 0 -> 4963 bytes .../main/res/drawable-xxhdpi/icon_twitter.png | Bin 0 -> 2517 bytes .../app/src/main/res/drawable-xxhdpi/key.png | Bin 0 -> 2582 bytes .../app/src/main/res/drawable-xxhdpi/lock.png | Bin 954 -> 949 bytes .../app/src/main/res/drawable-xxhdpi/mail.png | Bin 0 -> 1199 bytes .../src/main/res/drawable-xxhdpi/mention.png | Bin 2249 -> 2410 bytes .../app/src/main/res/drawable-xxhdpi/more.png | Bin 0 -> 339 bytes .../src/main/res/drawable-xxhdpi/options.png | Bin 0 -> 3262 bytes .../drawable-xxhdpi/subscription_hashtag.png | Bin 187 -> 0 bytes .../res/drawable-xxhdpi/subscription_lock.png | Bin 484 -> 0 bytes .../app/src/main/res/drawable-xxhdpi/user.png | Bin 0 -> 2118 bytes .../app/src/main/res/drawable-xxxhdpi/eye.png | Bin 0 -> 2802 bytes .../main/res/drawable-xxxhdpi/eye_slash.png | Bin 0 -> 3859 bytes .../src/main/res/drawable-xxxhdpi/hashtag.png | Bin 390 -> 376 bytes .../res/drawable-xxxhdpi/icon_facebook.png | Bin 0 -> 1499 bytes .../main/res/drawable-xxxhdpi/icon_github.png | Bin 0 -> 4082 bytes .../main/res/drawable-xxxhdpi/icon_gitlab.png | Bin 0 -> 4687 bytes .../main/res/drawable-xxxhdpi/icon_google.png | Bin 0 -> 3764 bytes .../res/drawable-xxxhdpi/icon_linkedin.png | Bin 0 -> 1953 bytes .../main/res/drawable-xxxhdpi/icon_meteor.png | Bin 0 -> 7061 bytes .../res/drawable-xxxhdpi/icon_twitter.png | Bin 0 -> 3353 bytes .../app/src/main/res/drawable-xxxhdpi/key.png | Bin 0 -> 3468 bytes .../src/main/res/drawable-xxxhdpi/lock.png | Bin 1181 -> 1271 bytes .../src/main/res/drawable-xxxhdpi/mail.png | Bin 0 -> 1568 bytes .../src/main/res/drawable-xxxhdpi/mention.png | Bin 3242 -> 3086 bytes .../src/main/res/drawable-xxxhdpi/more.png | Bin 0 -> 443 bytes .../src/main/res/drawable-xxxhdpi/options.png | Bin 0 -> 4580 bytes .../drawable-xxxhdpi/subscription_hashtag.png | Bin 227 -> 0 bytes .../drawable-xxxhdpi/subscription_lock.png | Bin 658 -> 0 bytes .../src/main/res/drawable-xxxhdpi/user.png | Bin 0 -> 2748 bytes app/actions/actionsTypes.js | 10 +- app/actions/login.js | 30 +- app/constants/colors.js | 2 +- app/constants/headerOptions.js | 60 +++ app/constants/settings.js | 26 +- app/containers/Button/index.js | 75 ++-- app/containers/Sidebar.js | 8 +- app/containers/TextInput.js | 114 ++--- app/i18n/locales/en.js | 18 +- app/i18n/locales/pt-BR.js | 15 +- app/i18n/locales/ru.js | 3 - app/i18n/locales/zh-CN.js | 3 - app/index.js | 46 +- app/lib/rocketchat.js | 86 ++-- app/presentation/RoomItem.js | 2 +- app/reducers/login.js | 35 +- app/sagas/login.js | 67 +-- app/sagas/selectServer.js | 45 +- app/views/CreateChannelView.js | 22 +- app/views/ForgotPasswordView.js | 79 ++-- app/views/LegalView.js | 135 ++++++ app/views/LoginSignupView.js | 414 +++++++++++------- app/views/LoginView.js | 308 +++++++++---- app/views/MentionedMessagesView/index.js | 4 + app/views/NewMessageView.js | 6 +- app/views/NewServerView.js | 35 +- app/views/OAuthView.js | 3 + app/views/OnboardingView/index.js | 13 +- app/views/OnboardingView/styles.js | 32 +- app/views/PinnedMessagesView/index.js | 4 + app/views/PrivacyPolicyView.js | 17 +- app/views/ProfileView/index.js | 4 + app/views/RegisterView.js | 300 ++++++------- app/views/RoomActionsView/index.js | 4 + app/views/RoomFilesView/index.js | 4 + app/views/RoomInfoEditView/index.js | 4 + app/views/RoomInfoView/index.js | 7 +- app/views/RoomMembersView/index.js | 4 + app/views/RoomView/Header/index.js | 3 +- app/views/RoomView/index.js | 10 +- app/views/RoomsListView/index.js | 6 +- app/views/SearchMessagesView/index.js | 4 + app/views/SelectedUsersView.js | 19 +- app/views/SetUsernameView.js | 127 ++++++ app/views/SettingsView/index.js | 4 + app/views/SnippetedMessagesView/index.js | 4 + app/views/StarredMessagesView/index.js | 4 + app/views/Styles.js | 81 +++- app/views/TermsServiceView.js | 17 +- app/views/index.js | 12 +- e2e/00-onboarding.spec.js | 19 +- e2e/01-welcome.spec.js | 14 +- e2e/02-legal.spec.js | 56 +++ e2e/03-createuser.spec.js | 139 ------ ...word.spec.js => 03-forgotpassword.spec.js} | 0 e2e/04-createuser.spec.js | 118 +++++ e2e/{04-login.spec.js => 05-login.spec.js} | 17 +- ...roomslist.spec.js => 06-roomslist.spec.js} | 0 ...eateroom.spec.js => 07-createroom.spec.js} | 0 e2e/{07-room.spec.js => 08-room.spec.js} | 0 ...actions.spec.js => 09-roomactions.spec.js} | 0 ...9-roominfo.spec.js => 10-roominfo.spec.js} | 0 ...server.spec.js => 11-changeserver.spec.js} | 20 +- ...broadcast.spec.js => 12-broadcast.spec.js} | 10 +- ...{12-profile.spec.js => 13-profile.spec.js} | 26 +- e2e/data.js | 1 + e2e/helpers/app.js | 13 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 - .../Icons/back.imageset/back.png | Bin 409 -> 0 bytes .../Icons/back.imageset/back@2x.png | Bin 718 -> 0 bytes .../Icons/back.imageset/back@3x.png | Bin 1117 -> 0 bytes .../Contents.json | 6 +- .../Icons/eye.imageset/eye.png | Bin 0 -> 631 bytes .../Icons/eye.imageset/eye@2x.png | Bin 0 -> 1307 bytes .../Icons/eye.imageset/eye@3x.png | Bin 0 -> 2067 bytes .../Icons/eye_slash.imageset/Contents.json | 23 + .../Icons/eye_slash.imageset/eye_slash.png | Bin 0 -> 820 bytes .../Icons/eye_slash.imageset/eye_slash@2x.png | Bin 0 -> 1886 bytes .../Icons/eye_slash.imageset/eye_slash@3x.png | Bin 0 -> 2886 bytes .../Icons/hashtag.imageset/hashtag.png | Bin 142 -> 147 bytes .../Icons/hashtag.imageset/hashtag@2x.png | Bin 224 -> 227 bytes .../Icons/hashtag.imageset/hashtag@3x.png | Bin 313 -> 307 bytes .../icon_facebook.imageset/Contents.json | 23 + .../icon_facebook.imageset/icon_facebook.png | Bin 0 -> 498 bytes .../icon_facebook@2x.png | Bin 0 -> 775 bytes .../icon_facebook@3x.png | Bin 0 -> 1104 bytes .../Icons/icon_github.imageset/Contents.json | 23 + .../icon_github.imageset/icon_github.png | Bin 0 -> 914 bytes .../icon_github.imageset/icon_github@2x.png | Bin 0 -> 1997 bytes .../icon_github.imageset/icon_github@3x.png | Bin 0 -> 3032 bytes .../Icons/icon_gitlab.imageset/Contents.json | 23 + .../icon_gitlab.imageset/icon_gitlab.png | Bin 0 -> 995 bytes .../icon_gitlab.imageset/icon_gitlab@2x.png | Bin 0 -> 2209 bytes .../icon_gitlab.imageset/icon_gitlab@3x.png | Bin 0 -> 3435 bytes .../Icons/icon_google.imageset/Contents.json | 23 + .../icon_google.imageset/icon_google.png | Bin 0 -> 928 bytes .../icon_google.imageset/icon_google@2x.png | Bin 0 -> 1852 bytes .../icon_google.imageset/icon_google@3x.png | Bin 0 -> 2844 bytes .../icon_linkedin.imageset/Contents.json | 23 + .../icon_linkedin.imageset/icon_linkedin.png | Bin 0 -> 595 bytes .../icon_linkedin@2x.png | Bin 0 -> 998 bytes .../icon_linkedin@3x.png | Bin 0 -> 1492 bytes .../Icons/icon_meteor.imageset/Contents.json | 23 + .../icon_meteor.imageset/icon_meteor.png | Bin 0 -> 1258 bytes .../icon_meteor.imageset/icon_meteor@2x.png | Bin 0 -> 3082 bytes .../icon_meteor.imageset/icon_meteor@3x.png | Bin 0 -> 4963 bytes .../Icons/icon_twitter.imageset/Contents.json | 23 + .../icon_twitter.imageset/icon_twitter.png | Bin 0 -> 774 bytes .../icon_twitter.imageset/icon_twitter@2x.png | Bin 0 -> 1591 bytes .../icon_twitter.imageset/icon_twitter@3x.png | Bin 0 -> 2517 bytes .../Icons/key.imageset/Contents.json | 23 + .../Icons/key.imageset/key.png | Bin 0 -> 787 bytes .../Icons/key.imageset/key@2x.png | Bin 0 -> 1760 bytes .../Icons/key.imageset/key@3x.png | Bin 0 -> 2582 bytes .../Icons/lock.imageset/lock.png | Bin 408 -> 351 bytes .../Icons/lock.imageset/lock@2x.png | Bin 659 -> 658 bytes .../Icons/lock.imageset/lock@3x.png | Bin 954 -> 949 bytes .../Icons/mail.imageset/Contents.json | 23 + .../Icons/mail.imageset/mail.png | Bin 0 -> 445 bytes .../Icons/mail.imageset/mail@2x.png | Bin 0 -> 853 bytes .../Icons/mail.imageset/mail@3x.png | Bin 0 -> 1199 bytes .../Icons/mention.imageset/mention.png | Bin 618 -> 709 bytes .../Icons/mention.imageset/mention@2x.png | Bin 1462 -> 1580 bytes .../Icons/mention.imageset/mention@3x.png | Bin 2249 -> 2410 bytes .../Icons/more.imageset/Contents.json | 23 + .../Icons/more.imageset/more.png | Bin 0 -> 147 bytes .../Icons/more.imageset/more@2x.png | Bin 0 -> 227 bytes .../Icons/more.imageset/more@3x.png | Bin 0 -> 347 bytes .../Icons/options.imageset/Contents.json | 23 + .../Icons/options.imageset/options.png | Bin 0 -> 987 bytes .../Icons/options.imageset/options@2x.png | Bin 0 -> 1937 bytes .../Icons/options.imageset/options@3x.png | Bin 0 -> 3262 bytes .../Icons/user.imageset/Contents.json | 23 + .../Icons/user.imageset/user.png | Bin 0 -> 599 bytes .../Icons/user.imageset/user@2x.png | Bin 0 -> 1391 bytes .../Icons/user.imageset/user@3x.png | Bin 0 -> 2118 bytes ios/RocketChatRN/Info.plist | 5 +- package-lock.json | 117 ++++- package.json | 3 +- resources/fonts/icomoon.ttf | Bin 2084 -> 0 bytes 235 files changed, 2143 insertions(+), 1059 deletions(-) create mode 100644 android/app/src/main/res/drawable-hdpi/eye.png create mode 100644 android/app/src/main/res/drawable-hdpi/eye_slash.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_facebook.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_github.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_gitlab.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_google.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_linkedin.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_meteor.png create mode 100644 android/app/src/main/res/drawable-hdpi/icon_twitter.png create mode 100644 android/app/src/main/res/drawable-hdpi/key.png create mode 100644 android/app/src/main/res/drawable-hdpi/mail.png create mode 100644 android/app/src/main/res/drawable-hdpi/more.png create mode 100644 android/app/src/main/res/drawable-hdpi/options.png delete mode 100644 android/app/src/main/res/drawable-hdpi/subscription_hashtag.png delete mode 100644 android/app/src/main/res/drawable-hdpi/subscription_lock.png create mode 100644 android/app/src/main/res/drawable-hdpi/user.png create mode 100644 android/app/src/main/res/drawable-mdpi/eye.png create mode 100644 android/app/src/main/res/drawable-mdpi/eye_slash.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_facebook.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_github.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_gitlab.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_google.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_linkedin.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_meteor.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_twitter.png create mode 100644 android/app/src/main/res/drawable-mdpi/key.png create mode 100644 android/app/src/main/res/drawable-mdpi/mail.png create mode 100644 android/app/src/main/res/drawable-mdpi/more.png create mode 100644 android/app/src/main/res/drawable-mdpi/options.png delete mode 100644 android/app/src/main/res/drawable-mdpi/subscription_hashtag.png delete mode 100644 android/app/src/main/res/drawable-mdpi/subscription_lock.png create mode 100644 android/app/src/main/res/drawable-mdpi/user.png create mode 100644 android/app/src/main/res/drawable-xhdpi/eye.png create mode 100644 android/app/src/main/res/drawable-xhdpi/eye_slash.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_facebook.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_github.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_gitlab.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_google.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_linkedin.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_meteor.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_twitter.png create mode 100644 android/app/src/main/res/drawable-xhdpi/key.png create mode 100644 android/app/src/main/res/drawable-xhdpi/mail.png create mode 100644 android/app/src/main/res/drawable-xhdpi/more.png create mode 100644 android/app/src/main/res/drawable-xhdpi/options.png delete mode 100644 android/app/src/main/res/drawable-xhdpi/subscription_hashtag.png delete mode 100644 android/app/src/main/res/drawable-xhdpi/subscription_lock.png create mode 100644 android/app/src/main/res/drawable-xhdpi/user.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/eye.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/eye_slash.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_facebook.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_github.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_gitlab.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_google.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_linkedin.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_meteor.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_twitter.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/key.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/mail.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/more.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/options.png delete mode 100644 android/app/src/main/res/drawable-xxhdpi/subscription_hashtag.png delete mode 100644 android/app/src/main/res/drawable-xxhdpi/subscription_lock.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/user.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/eye.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/eye_slash.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_facebook.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_github.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_gitlab.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_google.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_linkedin.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_meteor.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_twitter.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/key.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/mail.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/more.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/options.png delete mode 100644 android/app/src/main/res/drawable-xxxhdpi/subscription_hashtag.png delete mode 100644 android/app/src/main/res/drawable-xxxhdpi/subscription_lock.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/user.png create mode 100644 app/constants/headerOptions.js create mode 100644 app/views/LegalView.js create mode 100644 app/views/SetUsernameView.js create mode 100644 e2e/02-legal.spec.js delete mode 100644 e2e/03-createuser.spec.js rename e2e/{02-forgotpassword.spec.js => 03-forgotpassword.spec.js} (100%) create mode 100644 e2e/04-createuser.spec.js rename e2e/{04-login.spec.js => 05-login.spec.js} (83%) rename e2e/{05-roomslist.spec.js => 06-roomslist.spec.js} (100%) rename e2e/{06-createroom.spec.js => 07-createroom.spec.js} (100%) rename e2e/{07-room.spec.js => 08-room.spec.js} (100%) rename e2e/{08-roomactions.spec.js => 09-roomactions.spec.js} (100%) rename e2e/{09-roominfo.spec.js => 10-roominfo.spec.js} (100%) rename e2e/{10-changeserver.spec.js => 11-changeserver.spec.js} (79%) rename e2e/{11-broadcast.spec.js => 12-broadcast.spec.js} (94%) rename e2e/{12-profile.spec.js => 13-profile.spec.js} (83%) delete mode 100644 ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back.png delete mode 100644 ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@2x.png delete mode 100644 ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@3x.png rename ios/RocketChatRN/Images.xcassets/Icons/{back.imageset => eye.imageset}/Contents.json (73%) create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/key.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/more.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/options.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/user.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@3x.png delete mode 100755 resources/fonts/icomoon.ttf diff --git a/android/app/src/main/res/drawable-hdpi/eye.png b/android/app/src/main/res/drawable-hdpi/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..1305c09e67d6adb376a2d86a29d7a2ed87914ca2 GIT binary patch literal 966 zcmV;%13CPOP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP000AhNkl<ZNDb{)T}V_x6rPz?E45OCG$<;hf`r=D+_l7?$P5LeAh8IFex5=S zf_mviqFxIliXsc5z_ge4A<6#kCYr8gYav7+AwgPH_M>L2cTVTr-P!Kmu3`@n$PU~+ zGw0{~&YbyM#$qj2ftgkTKAj0wR#rOt`Ugv-WLwbRjo)(MJdI*Gz-JV1@be47?q)8{ zxZl*&q?2u`HYIUsX=&1jp&y5V@frq@J{3^J#`$~Bpl)I6oU<)0Eh7=Vr86mUw!5f6 zO1KFO7O5C?euw>bCU`FgPBUe|A&miB4UDbF<QD(-<pV<Ss&2opRq4#qmUykZpqfi| z8o}ZXXU<z0=V!K;Z@gVwTPw`~s*if%y`z;&&}#r#3F#4h90WVk<8M8u{FIC$1_17I z7uI9ozHnea7h>0Qzwe0(Aeo=Pb?)%^&|VHAC`4RGcjto_X1g=D*a=K;z)Gw#^nzar zbovf*&T%fGCRB%{(^GUzk>U&=I+7jhtfb`E*5>^#fTaS+i@F}{apo3Y_jt<Yk&RlQ zOAE{v$!;X_8VU*fU7q5jMnC)$A;#bhn9oVlV?g7|W$C5QH0`6=+1yVM376CuE4BNl z967JXBs)8szhTnb5Ut+O1Dqlb<zo;#i;GjR1`P-hhmNmOlEeY)k)ZObAd*3l8RjvO zXL~lSG3%(bsmY=mF<%lkaS#{zAQ7rZ<yJH-!37@$?%1JekA_KaZnUPZ+=5h^DUsqP zx@xvlU&@I*6jAG~Y1&wJUSXA-U{4JW<U*foky2A2H6d{IY#MDO3GBp}9vno103IEe zjhn3sAU<jnlaoOViNcEu`xY4!K?WOhDk>7K2(){xI_ucZhp-5funi94!e$T$H0=wf zv=i540(W(mKJfJdmL)1nIx=X#VI@;zvRRK6VT7<)7GV<yaYcx!6X<%}ju{=NKHgS) zobEzzPD#mp8ml%-BptFNCmq?8A4!TO48k(>h;49$ouXz%8RA*K%<$ZWoY`xKNT{^V zgm!OuBjKL-^8yLk$8RCt3IoUH0*N9HC&MgPCf1xcgM-xtI(+wVcD9?(NII`*GuK%S z&aw=#ID${_%2dQ8CwV0L7#DcyLodEqpU4kiq6PSy#XuHdMwz6ehROc@BM}N^?7uvV oik#%X_#<G(kM&~}m>CuL1!I$=(R_~3Z~y=R07*qoM6N<$f>LI*{{R30 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/eye_slash.png b/android/app/src/main/res/drawable-hdpi/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..61209fdd331349d8095160cc77c7821b2bc26062 GIT binary patch literal 1384 zcmV-u1(*7XP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP000FaNkl<ZNDb{)ZETZO6u#$u-+fUM#>Y0k61Rv1HH5BZEd$myfYS&BCrkm2 zf1LdA2P!0f#DqVZV06Zhs6;d&QDcZRIweXn-0V6g+e+6?B0`L^pn(+#4A^Mb_Py8V zyyGpUjD<vh?k4L!_uO-y=iGD8J@15=9FrONj~P%(k=yNGlnbNfD*n%Pb#+5gWtH!% zG?~XMm)2~|#x}AS6Uhw?4f>y_FF2Ky9z~);Ni~B=m`bQYjl@|^r>^jk;4vG+>s?)T zEj9QZ)?WNcC1|$2$1`Ow#*^L4SKXaXrMC;AHVY+6$Fs3@2&7*)bU(%Qxk{#fK$^=z zF@m&ijT{YrZ`<*FTjIL9I!Ekcq6uJ)0LWy9h)e`<3ceQwsRE&>9H*WJq?1No-ddTG z6-vpkSqJblx*^twyF2@`Nm<SSW^eE*LHaFDxmYPg2Qo}8n$Y)Xv!@;jA2@I=+urH- z7nkPer_K$<x4?Q2NDV%Hfu^rhQjcfb+VU+Yc2)TwGKKjiPBk4y3Zx$iU2BSV2L@~> zo|#NX;Nd{v0#~lfQ@dL#^%C!qpdTFt#hZsymm6`ruaQpm(VmV&yl0P_h+SU)GHIGY zoGuUESBdneqP>9@+t{An>(@_74_^L86RNAwnB8<O9s67;WmPQ#{qUahvgZZ{&X=T= z83xu|q%0vcv7x^w*lJ^Bh*z#$JAF8DB?7~{;5?w|;^DsT;P19!?(Fybjd)z2nJ|-? z$_3cY=+Vx1ZCj7WSCN#W6{%l<gIv_|3l~Sa4xQos%sU=VT;0c{R&+wEpNNzlFUR$T zqcYVE5zmDy7wOC*Wt-mK;Hf+ktC0F3T-^*cI=YXqh4(CCr?>V2M74nxFxnms1)?lx z50}Tk&Rsp$fhw!~Ym}M#1t8@>Ib#^gry1%Wu8(XVmP4W7-=xvAEQ6!2a+!Y(%N8+7 zaW5~xdT!3FDW6$#&JO~O7wL|e(^J!^gggk4X;$Uxx>u%YemYG-Me4pBH)~m_m$ooA zFGvZieOkm)Xl>9*gj9O=!pQ5Eb<R&;Z+kmx;AJJnCpf8LRc`+Dno-l-1V?^)4!nV1 zbKI<DJbmtc#^z@!$Y8Fq6ZeOH{!Jr#ixmLf;i~dI%CbGU=Q=&L&8UGFS!Y#lMOpnw za_9}{-hm2NEKW{yh{LvzJv%+Vt!OBX)>_f7NKe~wmaP-Bu%Ntb7Z4+?!+YGn#8X?( zdhWULR4j1)xk!*c@5nEH<&S|_3xc%nj?<`-{$wB!NU)DRoK?Oj;P)x7k)hT|D6re! z%RDDmEMHz%I+9FuKsieo`Xi*YOXKz2N>A+;d?cR1h2bfS9x9sJ6zM#8-Uj8THZ*L$ ziEO;UI^dm#&C+a}n~2$HN%g9ExWK|Y?YZn@5BIihd1mCqV<6m#lU7=KqRv7suc4=> zEoR&Cd<!uvxpGk`d#ob5-gA?tbSaHiYKq#WE>09tNvybdSPouE&s6E;{UntSef?=v z`y9sLfs6k@b1m8t-n%z7rn&KZ6ETPgA8sy~u_8jxEuN}9j<n$kiMK7R8@>}rbWA6D zwJ+3h;C4nCV!oG4BXa-sA{wh)^xWp=W)mNP8dIrFFy4sZ=8X$R6vLgj!tsk}cgG<V zA!5D#$Plv$s_<g~H^OO0G!%R<*Nro>V#R|c$z)<4%6q;^!a!HLq#MRx;ln?j&b7be qHUE3#@vL5W#}1Q*lNp#G1OEb|FD|>IJ&VNv0000<MNUMnLSTX!)tEZ~ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/hashtag.png b/android/app/src/main/res/drawable-hdpi/hashtag.png index 946eae13499bc4e1fa0696a973ae76668c6877ac..5d4be58c77410b6365b723793fc451c99e4e7436 100644 GIT binary patch delta 178 zcmcb|xSLV2Gr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwc4qM~qpk*AAehzD<S$^ph_ zx=|nH)uxJwALK|Db{1Ydy;Gt&V`18rq^K6HFk^O|6_OK!6~dNZ^e8w`W0N5ESVv;Q z;)E>>3*D-uH(1DRogsD6eTw8_N8b>GK<A4mxL;k&nke<MO~cr2wd<m$PN^=pI6FB5 cd1i()6Xn<zX1M+bx`Khj)78&qol`;+0Iv%=kN^Mx delta 213 zcmdnZc#l!BGr-TCmrII^fq{Y7)59eQNK1e)2OE%lP;UEUqM~s9R8JSj5D(tu6bEMR zY3q#segA%6a)N=d@nlb@k{gjGsv0p)uVw~>Ty8M_qMN|ds+e`cAnVWX-{qVhJ)JWx z+ZrGK=MAYWk*oWvvw_3)I@_beI)~KSeR*bA%{tD=t)aPS7u){nfmfR<eq1$Pl&vsj zooA^3X9cOP47OedKNdT-XbY;mU|O6iSk;m6!Tq#SkAkDP#4kx+23?`57ml|$ZGbLi N@O1TaS?83{1OO+|PR#%S diff --git a/android/app/src/main/res/drawable-hdpi/icon_facebook.png b/android/app/src/main/res/drawable-hdpi/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..5c637c0757a2a989d6c399164e7c594ad695c074 GIT binary patch literal 638 zcmV-^0)hRBP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O% z3;baP0006tNkl<ZSP5fv$=u@o|NsA)KrGELfPj&a@hQ`PhBT(Z;22OifCA(nBf~6^ zg9bEYkRt`;7A9nY!N4AL4q~BYs0a&iywX<_d8Df%_*Ghz`~R13e;7W0`^E6_>o4a0 zr=H2&fA&cc-F})lh=YygTVsaFX%j6`YoLW<=$3-`EKH1tX04-xgLt{vKCbO?`@qb^ zXphYygv6+xhT3w?E&&}QPsn0i@>F$@j*8F?Ek!{aT$T|dPSrFN;;i%nXsHGki+?_S z_3iBAm!E(C{rmqvNdDB7*Vxk*7R_V}Da-J)W7AwS_0;9#mtR_8lS3DyYLszvvT&eV z@bBOM=Rn7ppo`<;Q`JFCjEorO{r$)A8JFeQ#4!xOric<TVEsgrcA7hgB-a2Hlby>{ z<oNGc=!k=I6&!GIuwb+tSeO}kW4+W4!xcdpn-4$G`0)9cD7rY=4)V5<d+KMWK(I7s zVq%m`@KcvWw|LK~C-<>AXrQ9(*UPuxFhUdL=mBvMuqb%??>_?@dZ-PUgFb)#{RW$3 z2FyXP-+%vt%R!7z>6=I^D4-^>vM~SP=3xGYZ1AEMr)S(8tUAbIzkdI_7g4!e5LxW! zuYc@6e*NJ>7K5?L&Sk&<{N?!Y<u6KA@$WCgW0=86^xuzPexW!BNe+WKAc-2o6-WZ3 z4nhhHtjy66!Wt|{f}<gX6c|{UqalPfSdat<UkHIlu8<r!piJ;68jwgI42}Xj1~{Y# Y0Q+L9jc6`wE&u=k07*qoM6N<$f_HQ;djJ3c literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_github.png b/android/app/src/main/res/drawable-hdpi/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..32dbe331672bc64147aacbe809fc7e25dbd87d1c GIT binary patch literal 1421 zcmV;81#<d{P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O% z3;baP000F<Nkl<ZSP8XQ-%lJ>6u#%~z%FP~n=-SoA_2rS5|i3c#X<qC)E9pwU`P}H z0232UUySjgi4Vra_@E~Gpg#C$A{uS98Wl?wZPV6Bv=;h8DiQ>C7k|{0Wr5kberMd- z&hFkDc3pat$=*5VJKs5T?!9NuEQu;dTU*=iY&QF_5b6ji)usd`1c`)DN(n*BB-D~3 zTEKiF7K?qhu(0q~H7=-9u;Vx*q`YU~bpSS2g?28Hm{LN%nM$QTuEb{BfD(?=?+Wz_ zGSF8Ep%FuL))MsGQYv-Eh=D?ylw)IKk+^NY?key5nuB2{cp&CtPUbfG)n=%@z5SL< zX6=2DJY+JgNlx@tW8+On=jZ4DF6Ai;h=W;QyLJ|P<<3&@PTpg0%{DaN++P}0(UNg0 z*E4J5H#!)8Fr3M5UWL--D_YAx(&^WfP)~$2L4rP)B;Ui)jzZpwt1PQwyk?FnK<B{m zE_4}OcZ4vvFU<e8Yb}%cB9Ilx{nNx7xMYxw3@4MxQ!H+7Zthk&_hn@8QND+xB%XAM zNcpu!DcX&tNT4LeeZ3H$Qp9?GWo2cS@8j|Ku<~*fJP!|x<e}j773zt9w8N<UJQ|Ho z2jV>OV+iaX%d(ah7Z-mIbm8CD*4A5H*G&NbLs(u{S2w-6kqe9bdER$F-}o8gq9>I1 zQ5h0~`e>{Xj@Na%YGsK;qS4*jT+`Z-9OdHaZ)&c<S`dVI(oU1ETDj+W9VVL~2FdTH z{Odr61&3F(@pYg|WqB@7hvyhL7P*zpJ_0~tFNMK4VQ(Of7sIkz=FG*M1`dm3kvZWV z(E^CBH3@NCtE)libAnq(!LdkE;x?TUt;Ok?bXseu!&fR}PWb#rhv!(N-_Pi@g05)A zJ0sL`b1c$tt~5?i^vVl{2KRqN;C8ikD5?^LsOWtb06n3w+&5-;!n1YE91DU`t6C-6 zQ=NP#WTeQzt<q8`k=8mPI>?n(tE)libCS4EOQFQ7#H;uhof0p|D5~^`PFITzoTJRG z<KS2%j@h?5CCl&y@giQ74JLiHa^_-AlO4w*$+AwH0C<v)t&NTGo}QjM6Q)u*bAamu zaJHLlI2LSd^eIl$DfBgmO+e&oI%26OmzP(6G-J$~mX?+SIoEv$2WY<ug+6LBnOc3& z4=CJzphl!)4Qk)U2JQE9>QxZzEszkMLE-vZNDqCEbpid3_CU1TcJsQFy~6VjVBLq2 z75yeI5MvT<KZb^eK0$;ttcS6kT^AFPNc~0hLVXDE*Mgl={hsn(@N(iLaK`U61alaj z;R&?E$14ejeRB-#$IlQ?@-6IlfefJYE6MahbcelY-X=j@*xXEj^xnmGrV+QBX3<hq z^5vq?!VUy2Y@tfC0A>5_zybDDZz3KaML&JcQlbxS!#D!Dfa?Tm#j^p<{7XNZb=NiQ zGYE#IMSaj7JAN#kN_Au523eU?-b-CwT@!P2b3ftsD9frCSGLE})E?V8wvxL3vM6MT zjb~<NHtVC&5v=3oJlWoVu3kNfuZ527$;%K}G4o&_?2CPdQAGi<0uBA2b<x-%Y_F;R zfNB66bPlEAyyMs(;`*}Lwx14@80LljS+1uk_QAeNb!7oDfPuE-pnDT<;g+9NVo%+R zBltLf?<<M_gSHz|+eIkmWNuwBOsNfs6`V?}?NfXLaP%*+EHsREAxu$*_+&B{bCxbs z$i^H{0OAucICTHrC|n~T^}k?|v~4#mzGD6Q1)E7OdV@m`><gc!fWPM7&d$zVm6BA0 b4LJV=H3S&*t>vR_00000NkvXXu0mjfSKF>x literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_gitlab.png b/android/app/src/main/res/drawable-hdpi/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6c68bff6c2e8954ed4dbd72f9ee1802fcb25b9 GIT binary patch literal 1589 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_google.png b/android/app/src/main/res/drawable-hdpi/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..c84a47c7693e5dfe92a26362861901393b4c9bd6 GIT binary patch literal 1378 zcmV-o1)chdP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O% z3;baP000FUNkl<ZSP9iwd2AGA6n}4Kcj;;ANvlRvC}`9W|DYEN9<5tqqA0Q@l0YjF z{!l|wj2hd<1e1bB6Qdy}qNGVt=oJ#J4Ptk}BQ$LZ#%SU}g9_njZCQG4yWQ^0^Ub#3 zcD6ga+pW8a&Oh&c@BGbs^L_JX0RCeaE)~zXb$yOo^%ep`9tX)FLKP7PfN%iK^jqf1 z-YZLq9TlLVvZ6KYP^BVN0#QNOga|(aNSzX3Q<lBw*RZxa<)Q$MR+JWa6s3Vd*a)~L zQCwU#m0dnFn@#(dpX|OE$u(?n;yw(Q7uNvNK_ak33Kmw6FpVJX&9?U*4rdn<5ZOu- zhi`hD8OW320z|7rz$4j?zUM>vNk$5?T9b#JN@vW$ASxh%!ziba1p(69G^E~aBA`cv zQ7kBGU=Vg>cl8|)7tgd%dBa-#DiCa0C||hd1m_ui6H3?(V7`XSR3wj@iz=0JWw+>W zXt7|l90AYJh_xu+qrfi!l&}zhSaa}xPFBx%+QvL@I^)avSjhtlDW7nP)r+Z&h!W5; zHFx5@2w)spw<oR5v7c)V2Sy8?(baPnk}O5Mvo=L)lK`Vpe}%}Nyh0(*)ydPh$?m>v zy^W9O^W@vC#N5ZRqhm5i8AE};LaOB5P6%>h*;Pn>`Y%8WpJ(Diydgu{=6HkA(#-=> zX{X3<xqAdst1p0@>Gp{vgm*IR_EDjaC-niM?^3u&biY242IiLME`a%7=k-inen_v2 zCqKLG74=TTBxV&-H(%+*4=%b4^*Z6B4HF@EoX*UU<<t8^M_uxZn$lMxg}iqdT53X4 zdqV1Br&u9E`2ZndXh4#5T^Pra1_Fv>qD6(~-JL27XCG>$%R&%DRW&b27IOg&i;zA* zGMYjILa9U;$B_<-*t5G#mM(!JMDui-WcA&NwPn^*cO`#aaWw2s<Fjhlyk{_{0<PqV zvp!hkdtD3&xepL-oEVz1TYl7^MVFLRcztZ0^rw=VFHKLq#13x@CnIXFO=&ce3t8EL z$$k7%7Rx}2@()7bYnir?By1AG)1F&l*T@E7Fg_6ndZoP8mL~Mk(mfxMnMaiujQo6~ z2_<|bbn}2z(=nc)l=oftLEYFon56kpiRYWlQKHYE=-87a9HXIs3{Tc^^;a4BaLsxg zwRl75{D83BHMo0h<Co1-D}^qA@*O@j;BtQP@R{n6vr>S=+@kz|Yd3#3y<w!&WIS#h z)$9C#G~w^w^cp_KXWyuLt2v%qSLPZV|EaL$nM!TcH8AmuircrZE@`Z9R?u~rA7(>a z7WQu_O*-OtVkXG2sAcPGD$!edBO{)Bf1caWgfeuS&E{(})5<bJ;+=%6K&1+9#Z#=8 zq?v3;9M}u8C-`N6DA^pfN$vXhL4dS7FKV&1b2TE))%rl;cq9uX3{`=7{6W7N4}8sz z+LUMgf;lFjWtvPIP1Dm8cXI8{EHqx~n$QDNIUj>NyO9%kIR|`iNlC6YiWgKNVN}{` zOY{=)ha$!FL($~E=Ukfe%}uBFp;P42(~y8PBdvYKZIw0rOdaIKzx$M)&3Y(bl3s4B zZ1d<r==rdKgdta}fUDKO&y|f2+eP^ZUmry{E2Ff(x3aA(KyI*zDtOU}ZEIjgsp5)l z<5-3Voj(WSWv*(MNyblmZ0+Cp<q?>u0O@0`Kd~dn>vb3M7SH3FW$@oBl1TlVKU{`D kHud*zJ=U+c|KIZe03J)i&-ed7@&Et;07*qoM6N<$g3dRR5&!@I literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_linkedin.png b/android/app/src/main/res/drawable-hdpi/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..93708032ce83abab60696a426e2da12ad96a3ba8 GIT binary patch literal 797 zcmV+&1LFLNP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O% z3;baP0008iNkl<ZSPAV|OK1~882)y%ZTg_4P|#M85?=>x<0BTd7rnG1DB432AM~JN z+M}<N_U1`F=uHF<3KokZk`&QiJcyElHCAo(q%}<g(vnbZT9YPO|0!(P>`WRfyPHeC zFzn1XkMG+*GqbxR;nIUO$f|ds;sAgeO7=sN5`a1aS?W`e!Ci82#C{h#MOCe(Qa5># zWk~4KRh2eNUSz0hb!lDb)X9siD{@(h7?$jWA`+{uRB+?42gi50mJK}$PU52P9TKUu zsJW?}(9o@;?Krz<Q%=a+u^E*P8K;Nd<~XY|++U{15>8TNj5y(Op@QnH24_f?Bsc`Z zjAzMeaE4NuEPN9YPS-y%g(THk4bBh~?0X!5?{kE91lm6-4U<7Hadtq$`THa(Mx9fk zRVLwAa!K640#>-nG@ai`>zBEvrCo)FdbYQqwW&dCvwRKxoWszE$s9M(=>}Vodfa~f z1+j$`_HSGZ@7^tFZEiqgtrN5JNsLG1c=-MsUVM$}yKwn}hI)3i<TZZ!F`Q@UN@p9K zO8yjNhOZy;;EZk$V}mr;SEFrR15WLBVQ}m_dI#Si!zQNy`6CJ%tcJRFa3^QR*q`lZ z16^(-ohzGasN20hH}FcC3;VW$Ef^6@HKYlo(pij8$1y{5M})d6h2~k4s0w16!lwU5 z-h36p)#t(GO_WXgd&fG^+rEM8yp0x(KNR73QzI0N#BkX^mfO+OSrz?H0$5CCIAON> zL@?FRu;7jtmNE!V$2jfA8XF8n=N36(M$9DsaD07L1;;VM)CkR|#E+OHO>!d&y*QX^ z$SC?h<+7n-Q7cEN9HC+nC{{0gmW_sIxi62vkJ-Gjo_z|Vg1*)C2*>FVLx550YkZkA zj;D27@ts<0Wal;i7VT6nphd?qlK25spo66}d7<MNj94nNn!(A70te0^OTSVd>8W^0 bUi$w6Ehompf9im?00000NkvXXu0mjfN`G(} literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_meteor.png b/android/app/src/main/res/drawable-hdpi/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..1d793b136c7635545fc624a335164189e815bee5 GIT binary patch literal 2170 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/icon_twitter.png b/android/app/src/main/res/drawable-hdpi/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..4b057eddf777b2f032478ed1c5244a6cd0e401d9 GIT binary patch literal 1209 zcmV;q1V;ObP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O% z3;baP000DVNkl<ZSPAV{YiJx*6h7z9ZnMqKMro~9Btr~QXsRMci4O=-D`==xX&V~d zO{$TiBBD@#_)EbDB8X7&hY$$eO%ygiY^zkXXr*EeXbV;i6(7lNO05;E>?7G^ckc1b ztUJxj&TMB_QxJP$cJ6uJZ@+u*xpx3AwEq|bxEy%3@j^T4#Q`MP!ui*lV<1ffh@=vL zccvdue|3(ljb%I2(a4kqNZXy?*uAp(gNc6BozC^hS|YmxB<v!fCXcu?2+B};DExlc zd(?dT&$$gK<&%i;X=*U?q6w&Dj9M0C_9PJQyLqJ=YZR20$h=Atp78*3R*gsqG|A)L zU;szJQx~J!acmIt!th$u=X!u33_t^uh1}TIBq?X3{q@=s*<K>t>C2lPiQpC!3_^<8 zxkC>DUOAraF#)mRYAX@Zw#oV2#QG$yvUEN=I>8&j1Nm^ZT$q_61N%e*yq+m!XQUK4 z6A=G67@_;Kh1`@D&u+D%YjoP<^BRM>riP2FiHQiZ;URwRM8wBavGCC{LyEBj?2U*n z<0r|W_Lu|O%{Hlodaq4UhrrX7VK9B^SR`qLnScP*j}7|V@-V1PMJi3V?#}Et7~`p2 z;pW%4PCSv0sRt_Y)||J-b0a`<xMJ{pBmB<)V-E*@D-e!DKsgSj;`O?OcRgcj8HBQF zHWuDjaS2p9O(A-Av4FQSBkL+U*Ehjx069!-<b}*zl$RtLwaXCdZwjHUNSafo#q;-; z7O;zgVgt|TRNZN*{xV^W5wrs;GbHFDU6%<g;v)aiGnVuD=&TK$S~`r$kV5c{q2%dW z!CSF>_AK>UroJ&7Gq+=5X?hdTbWHu4x8LEVhV#+q<Ksi;IOT26+JI1=;>Fq6%5-M+ zDI*APKtD&rUkaoh465Wa-#>Fh$Xy-^A95zK7%~j0Sj&h4xRIwX<#b#I`K>Sdao(BN z2FNfH;%{8F??Du=Fk4jt&IFCfoPR-}@|s($RTwQJ$wws7V~rL%D^INs!YCi4zqq+n zF%%Ta%ge=#34o6tF2FCifiZMdfPRcNp8$dPF|D@x;FX|mJ;CtoK=`CrTooY0aW<-c zgaPQ|#r?fkU_*MuH)n@h_STAZ1!M%I9*i994n@}U;vQsiluyuOwGy4n##Q+<rByxW z71z3c)Jmw0=etOkqkOhpTg%VO#!T<OA{5!;w#}U}H31plN}$8jd{f@eV5)bdGn<=? z`1Ylp>h>cyx?cdDA=q}1LdF5t^%VtA|1h@(i+VdR=w3;17jOL@XMkUsS;_F8dG6s@ zc-QlYd};F6uzf6lQ%TB~_@rk5|4!reGA=^6bEaRlT`l}%x2CKuk-M7<;-h>Y>ihd^ zz)!s8!;JjF!d@;UBk5?%=a!+)js>U^*OAPwSt!6}{*t?mkN$4fUsbW$-sNlSPn_T| ze;Q9*(%F2#?>e#NaR^m_9Co-aPT?FBR!c=+C3UF^MdTy|GLc}@iSPRPhIyg=-x>G| XOCEofN$SUc00000NkvXXu0mjf(V9&V literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/key.png b/android/app/src/main/res/drawable-hdpi/key.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9471db3e2ee08669927291d483116ad91cd018 GIT binary patch literal 1310 zcmV+(1>yRMP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP000ElNkl<ZNDakSZ%kWN6hHU9*LLDIA%>N~Hdq32Cc=tc$3W<+n;4hOI3xSu z2NR>lxGyHgs2?<9{I14N7{f<16HEwG{)P=K3>Xv`L;)oP3ge$sL`Nr<zIQz5(btyt z6`Bp>P0GFZoZq>>bM86kJ^=owA*aGyRaGV1GI9<UJ({mgO-*g2VzU!QBm+1+o^%MP zZz6~)0u>^n!dL;~H<Ykh2I;Gz{vW!M+3zGbC3c*2zXS+h5ZS}q9Uz3L-)r0VYIk?z zAKT%~bP2@AUG5J6@smxk2vCSM5=bo;A<u4rx}ThR8~|UZ`2=H#d{W+nrw6;b7R?Bf z$+i%4q^RN7;RAbQi}Lbd&$X#|W6t?6{^fT-gOAAx8(n{Y!BKlfU0q!;9-C|*DK0&y zL2M>q8b#4lkY{(dw>JK6W;ixBhRgH*>)D5oPEh0*36rz3y0)^kFxzK_H<L*bAs3RK zQxV`u$$OP`&hoQI94_};j+36}BiQg__(tcql!|Y7i$c6#U0oeLFCHAXj{yqyoXfVx zxLzhz*Mp<v(C4VB^^Ox2pT^mP6~w!`4AFk2spE-weX_ky%sC^#V+`U#GQjFT!3zlZ zkg+GPUWu+ZR|5myIU!(-cZg6NuTQquiDzbRXHryppUNoaB48o;BWqp=+`2cEC~ol* z0kRCyPP0y&kzu`K05uu*8tdU39Ss8DGpgEEifTl`#E2P7x00sYAgmd-JI#8OZEbA< z%HM7BI8#NH`*V;Dsk%u7Z-;*@N*G*F^^MmG_?}Tf%Do&dE&;9jsR(a`bDltACTRHn z>IEXT>pDgI$qZvAixSI9jSfI8)*lBmw24eebiG2X>#7i3E-rg2*94Xziaa1ow`S%J zX6HHxaf~jxJS!)6a(ThOV+4!yvr{>Ta(fZQi)3pDReK>PFaNv6x#?}+Z>pW>&|j}L zZGf_s&r(uewg~Yaw~T=*DLG?b*MgT6o2_=RyM5M>J4-y}Ax&+fO4~=ZF|VL}#^>w! z+0e(&TZmcda(S{gK)XWi<qCu8QG#)*oO$vjo$~3RinGx5PAfL6XAAkMCri|j+Cq+} zlYZHP(pjIc^T&8n-X{>Vkc!JXIlXj=pTS7sup)jixgwpjg6&sU1q*ZU!033Ps){y# ze)-!?ZByy<d505B;{~yMZWVq8DME@;%c8H*swBzdl+V94R2!&+AB@GzLVk8=ptHqU z>Mjh0u$`{`0KWlf!DmK#yZU3XrV+;ilC6tfZnuWe6iaRpvyHRVb4=Y(uaeW*l&Zf# zR?gk*>$q;57i}j)lHxo(;Prw<c|@^@A~FeohtXn~5B7FWNEZ1tMK()s%YF>0tz~7E z2Mql^M{FFx^Kn<j3SDak9d?(t0hXa8J{;-ye(5;n$wO5g<!YBC@!D{|x0dzy95EXk zLjpnHY7wAoO`~5X|AdAQu>NLW=M3p6CFBgkb3F6d6=J@2#R8>5k}gsY&*&$|{Glhm zeRGRXJI|ljKPbC$)iE4&?d~B8t(Xgn{xxo9QtE<_NOp)S{7-q0wTOFv*NM%logHIR zYO6}4ts-xAtk?ImURv<`^A6|NYC@Z!h-ttPBE1_+dOzo<Y|A<2|J_nH_^*Ng0z5|E UNnoa`wg3PC07*qoM6N<$f_i{y?f?J) literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/lock.png b/android/app/src/main/res/drawable-hdpi/lock.png index 60f2bc365ecb82573cb6f0965d960803ddcd9d82..68537368fa690630a82aa4bfe49f861043862d9a 100644 GIT binary patch delta 477 zcmV<30V4jd1mpuDiBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?QqLCpJf161} zK~zW$?NmEY0znX-xuc-K!qQm#A8dR?>22gR5s8rat57hA35pFpny3{&z{=WK+SuNW zJNL@5-rV7aWE(Cax3l{_nD2HM;UCY<aC}HXa6$;XinbY3Kat=S9q0a{*?3x14i^FT z?;f|v_qzbJSB%FObluDL+3`m)e-5D3xPLp|0q`e8uwEv{>xl3T;2yQl8*fE;r)ZHo z&6*;jN*TKqsBG7&&Km!C%yYcPTG1c$ClOaxugFVEB#bxeR0)3(VYAcno;A)))wAB< zVWhep646Fz9&z_IY+8y@^F|5+f67SiMw!-gOj98qDDwjaoidnf$8qb@e})sI=H1KW z@FBP=Gi6+eQP_y263c2Nlkr<Nj*d(SbHTmVcw(8w#>XxfD;g_wa!#RI4c>FvIg=VT z)zG1`F;Oi6d!F}`jLY70*o=nGlZ|!cl51<mbH}MS7=@R>lABBAI<3>x&sxXUjKwQ6 z8%vs%!9e<a);eAp8+=7GGs-Gzv)l|=tEde^Gox6GTD+^JJJzhfzbtDVTQmLzd!B%g T+qs1D00000NkvXXu0mjf+sEE- delta 552 zcmV+@0@wZI1Fr-jiBL{Q4GJ0x0000DNk~Le0000O0000O2nGNE0N{5$_>mzKf96R< zK~zW$?Ug%A13?hScQzLbA%#K;K`g{3jg5+xwV;ULBc{j&(+G-w0&V>ULD43Xv+!Ms z*b9PiHWo>vDQxU41@-R6nbSSid-#HME+jjT-+yO!?giqTVOhsrE;uXb;Wz^HG7gAM z0dQ&vqhgxV4__?-UnO^}y|RZ;e-Q%P<2iVefXnk{p&Fm3%_Jputb;`ly$#L-fJ@Uk z{cQFHiXl>tB4UbN336%P%x|(C9<c>#dnY;P_4P&|8npVYfvIAtG;^hkYqg_c2i#p^ z`iOCibh^J(m}=+@+cF$r-+g&m^A{KJ+y*ciUYr?@agNUS%&f2BL})|`f7rI2MgbE( zC&gB=n6HO4f$Qgp;Q(t`8zeuBNP&92*-d!nJr9>*LDW|aX5O`*iAVtlybgsJDS4;t zq*-Tlt>PmEq?Eyh_dE|3m^AB*u2p=nSk*cl0f9NX{d!2W$^hM-X9PSdIBupLbkglQ z#yKjmP8Z{zu1BM6&R%fLe&9bIDBL2VSRf-9EY#c}o@A(v(I&Tv@e4#+lqCLZJUD?` zfZB3hHs=PF|C_mL?b~$f0bSGb6Z{v@+Z}8Fw<xwPda&g!iacoas>sskazWq4Pi=b0 qvSBt-00s6C=zm1Q@L&9vx9ANo!KkG<qS%%I0000<MNUMnLSTZby7zDZ diff --git a/android/app/src/main/res/drawable-hdpi/mail.png b/android/app/src/main/res/drawable-hdpi/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8b7eadf8da42bc45d74dab0eba776c7664409b GIT binary patch literal 643 zcmV-}0(||6P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP0006yNkl<ZNDb|lze^lJ6vyA(iid?*SV%BM3LCMwAKtpAh<E0=^a=+F5y@W= zZ2bqcwz7+jTE&2fAhA&|VEl2%T7(p)h@F9uMl?Cro#&gKn`MyQW0$)`Fix>EJM-TA z&S!ow58$EP_Z46|VA{%;fb$$Mmel)OZX?zqkvO&wcDGe5UpQ@!EhFM<HSjlT#@LE| zv^OPUd%}VgUH(yuu^MA|(N1AR)(wDJPtZub5ab=6fLLCyu-eJ--mq-9_nXR%RXuU3 zwVjZ9a!=b$s!!dI-8er|Shr}jEvxXjTrL{{Ly^1EqlG77#(}~l*jeZ9*6H^jpHt@e zP?&RAzhxEs=&*i(Yi_5WKJO2*3lu&*J1-%^Af56Ypj%Cw&t{|2XGZd`>fHH4z7q)8 z!>*m_$intvWwXOD@(kEFIuJ>k#2nG@H=|dSoby!@?WOzji>}X<eN>r`EG!JG2RomP zM?EQWUZ7u2!OSrFOs?=!Q3_w0@Omd0Lv&|X#D7qc*C}X(`l=fnS5(amTZQ+o%a>^B z1{(Ae8LRlF%P@XkI)4^9x|4upDJX%xZ6>Is0{2)As`?f^!K2Atr*`T5{tAeb!Y&G> ziYMx(#JZuP&yM8RILCK_o+y)XDD`-eh;@hB;ci9keOyXCPGn-;Nzv<laoe$p;|he? z|F6O#L!ctx&9KF3t>2H`(2|FX(h_jFkj{#C(|^KR)AGIbL_nlKV&HC5A2qdqnd~Xe dhx-1mzzva21A=lN1bF}e002ovPDHLkV1i3pG}QnA literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/mention.png b/android/app/src/main/res/drawable-hdpi/mention.png index 637ac5dc304b7c2d43bea4572337e4ced4c144c2..1049562e765746dca04b06238093a22cb60dd9c7 100644 GIT binary patch delta 1094 zcmV-M1iAaw2gnE^iBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?QqLCpJfB#8D zK~zW$?N(iAR7Vt^nX7lBiQ>N|R;Z|f;)9!LvM6Y_N~00u4^$L<s1NF!A__vGU<988 zi}bCwFTN@9ry4NQqTVRjuItZ6P^jRe@h7E-Zj4#IGk#yP6Xu%TxG}U(4qVQeGv}Od z&bjBDdxiMC{-+Gck>Df}O%rorfA$+AMYS}tind0YE@{L=->di|m1=)ks=tze<8{fn z5c-fYW(^$sMV#lPl$V512Q%p)Q$%M_JS=cBnJjzJ6aHk3*a3@vT`5Jc5wa8e$9XTa zr7(-2GcLb3(D}7;TE*`6_V&KKYzQd|ylh$HjGkQY1z03#1!tX7d56`Ee+d_Fx3#@? zJuPl-9<QIjT5ELp11_*Af0iou$F09{<M-#TuH_2?H#IfIy1KI+P)Z<uA)W&p)_#4g zrKLq%!$K72>ios4d+|z+;PIf7s+wNWP$=?(!121}$8qzW1XV(Ax|8l`D+E+bR<mTq zdKBPUf+JJEWYX7neW*JGf0%`2On3*1QYp3n?#+%LU88t1IZ5^Cm0HLplq+Fw>2h^N z^yp&%`VN;pkx5_MUQ^$&PiuV?DtPB!?S}=YT&DxPJ_HJT(aH3>=e708bt0=DgvOjP zMt{$TJY~qx7p^XC>4U!55$+lJNW|>ZH(|CLa$kAg=DVrjv^A)$e`{zCjb^dY>J|F< zPqOIarNW2_<hg9b<ZBYiZ*>^9g3XnA71P~5k3^gky^T=vanoK_FO9jFUTw_J<Z;uW zO!*5kx2~<`Lmv7aJj<`KmZ1;&!rtfLv2xM~Fxp|kz@f~zEyH(egsEhtG0)$cN?m?t zosf?ye+%|+DMQLDf9=_T57|FVIPI*QGy*(028HNym24p~y)LNLp$sYR?^k4Gs+E(P zyf5q9o<)GIa5NM^k-9+!x*>Rkh$C2$4F`T6bhZo5mf@a-lt`?a>7J3N46QVcyhN#! z+NGqKkIT%%tNO>vNF%`f%23GJ%P~lvi+w7Ee8TGO3v(x3e{k}BI(G_cG3p|+ui}Xn z{k2kGzp5HG4U{V*?vdIRNy}*43C_9@T@`NrFW%{OWN0~nr(pkZa=EuK2!eMOI1(}Y z3`K%Z8*Yw)&)I7gIW|4zHQUIMx<)?C0%bhItlLO%g5hifDfdcx+gwokj6_Vqr;f}_ z5WJv0ziO}FfA(zz@IqYZ{`j%6-wJ)9h5!$MkM1KuA0JzTsdN=5m3w=zPx0%bg*nH8 z@21_={ZzhS#B?^&AAxsIvvWJsSMQg4k)ptKP|B|l98{r_Yfz3atG}Ezr?s^;R|@#B zz}7*@KYL@m)tSG7z}gK*O9HkI3jW@rm88&rkM#G}9QyoB|MLvI2P*yNByA$cEC2ui M07*qoM6N<$g2V40i~s-t delta 978 zcmV;@11<c>2-OE6iBL{Q4GJ0x0000DNk~Le0000O0000O2nGNE0N{5$_>mzKe~d{) zK~zW$r4~y_R8jPt`zDppY*mzQGVHU?%-<rTHulF-K_?rFK%qc`T0|`hqKyVE5+eKy zjwDvpv`Dg`pJ?q0Qm92{6cOdP$obsUId|sGJjYL(7iQjh=l{PC;UA}~t1mM^!M#A3 z4G8NEJHZ4XjV0lVhgDUj;|r<4fBA^*-QL~dFkA+p{P}nyczk79aH+bod|)oVSq57B z`&ZLcpdE+~hyWtI1W<Pw8dfW;3Bl=Lm?NR>3>_kZ0>LrkeN0WN_8dO^%e+VbW*F%1 z?#l{<gO3Pc6Q^THA)Y;6RsO;$kO;SRc?&gBBM|IhBOj8LtE95B^rOuee={JSgMWG` zs=Rqa=GrsG#l<0;aiQnn;GpZ%__rHuq*jb@BzbluE?dx~CE|H=jk}`G#xLd>b)>GP zvxhTBwNYIMMb<<RDJVUbw6NzziJrIj_Gah+l@L*m5keeMN$9ICEBn&g>Aj{D3`miq zkvx}lSr+aQoDzXZw+Li4e<Uhz>*zh9r}cZ%bc+Q~$xmRxwRPO7XQSuC8cvI}$V%M= zwsk7$b7@8CmKyg_?wI&7%0b^ILO$x8vQ&=z1QwizP?O;%GL8x?O%drl$`{=(Gem|< zS}}f1TBdaq511b<Yn!L?$XJ{TZ(6(W+@)~%EjyRW_!I|?LD8iPe?+%36Kbe9>|~1M z99FUGR}z#PHo<Wu*X4zP);MKlX3RTJzp}^Q9wM7DR!{{`Y+T}#NShg9C(@m?m@Zx| zvD`TsmJ6#O`Hc>uG)@sOE<Ta*kE>>{M&yk&?22P&LQ0`o6Wr^+os^I(kSy=qQCm1g z6fK_YmiUoA=Wdwfe^g!Mf@a4l5lC=aQ$0Jv>j=`BFP06`YO`=@#CK@cu?~Kg*7CS3 z3Z07VHszxErPvs)heRcYIleT;zh*d(S469_tVYn3p()(VnaOgw)J`+WEgfF&f6C{O zixQWc7$MY6?B*(`afuE|HLOg5`%{1PGp22wNyn=mclm{7f3FHr>ht-MzyI)`)Cjpq z@Doto^SF;b6`C<1Kuf3hp1A`Mmb~mle!decj9eCMZIp9Y%UkiLEUx*4mV%E(AVO_D z{TnGT?Xxc&S$>K8X(`HucZLB$n2TpB(7~Ot-!RN^WugwP<87JCjj@mUCTosW7+&E| zJhKeg42!??DB;0>8L$n__1S_zUpbAVi}`H%3+ZXVbfmRhSpWb407*qoM6N<$g7N~; ARsaA1 diff --git a/android/app/src/main/res/drawable-hdpi/more.png b/android/app/src/main/res/drawable-hdpi/more.png new file mode 100644 index 0000000000000000000000000000000000000000..b92f031041343f17b04490ee73d5ec0f5b36362c GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3Ea{HEjtmSN`?>!lvI6<No-U3d z9=yp360D0A4Q@C+`2YWZpMp<#Iiqe4Ym!99(%DZPr1cNyux>oLaYm<%uY>LE311X9 zPi)CN!t!g%zd|47{XJ6Ml1vAFTxEUK9I&Q)Ws{py0C%H^gpA5@siMuomSutK*k7D) z<jguX*Di~RQ<0%3{g?Pm2XFV)u0l$kPD`1Ej*IN74EfE$$;dFzyyf?Q-k1!a!x%hW L{an^LB{Ts5<s(T^ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/options.png b/android/app/src/main/res/drawable-hdpi/options.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3bcc2ca4ea4a33d67452a5cf438b5625a43156 GIT binary patch literal 1665 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 LNkvXXu0mjfBl{VX literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/subscription_hashtag.png b/android/app/src/main/res/drawable-hdpi/subscription_hashtag.png deleted file mode 100644 index 76cf0a34132ec39526f36deec738c23f0180f632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^{2<K11|+SoP4xm&Ea{HEjtmSN`?>!lvI6<3o-U3d z8luSw4osiL*8Z@s|9GlOMbSc7g>O<jH-n_l37MdqBAIC}<y@NEHX9fjnH@0s^Z&p6 ziL^WCPn;+aP-9#C|9|?1^n@SpJJ!glu`g@)YX}s%1=8UcxTMX@^`ni;VlIX=&Q?4B T#BT`&TFBt(>gTe~DWM4f_bWQf diff --git a/android/app/src/main/res/drawable-hdpi/subscription_lock.png b/android/app/src/main/res/drawable-hdpi/subscription_lock.png deleted file mode 100644 index 71ec7462652b0b68b4702d145e2ad161c6a194e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004XF*Lt006O% z3;baP00037Nkl<ZC>7OF%S{7841Hb@L{JE)P{SgT7A8orQc?p2WVs^ILO=whur0tL z1#sd<As~pvn&$-X&O{>QiZAxO=QsWdR;;S3t@jT-S3ywVK!8_KRC^t{3L$*O>Ev27 z;oE2Zq>5Zb9_e31aHy(1`q}<&b{v1O-AaK)MIg@vXM>`D@7&E~dRi;)j3;*Kc;<n5 zYt<?aijziYxV;yhkhiy6A|}{nd(TeB{s-^ISkg9U+W}-ACwR>H=S$uZW?FbXc^Hu> zTX=oM5z1lFzep;JWV7`$?nUd|a}x2e2uDu*=Et{Fo_}ep3v+xU|4+rq!g#XsuVH!8 hCM6M*7&XiW!8hn(TU*`b1OWg5002ovPDHLkV1lECj9CBx diff --git a/android/app/src/main/res/drawable-hdpi/user.png b/android/app/src/main/res/drawable-hdpi/user.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5ea6edddb6dea5ff13a60a616af45e59aac3ec GIT binary patch literal 982 zcmV;{11bE8P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP000AxNkl<ZNDb{(Noy2Q5UzSXG0_1x#1$ktC{fT!qM1q1n2pI*Q4vpqx7-8; zFZv5y4j#OCi4hSI4~l}AC>ayMbS5zq1rPC{Hy2!DAaR-QS621ROFFZ(or|Xw%)IKV zuj+fRs`@p+lKiI%;9_~Yy1JsDr+ytJf(D62gqQ1ASKaOF>zi3ju0;{oHMZ3O=sQHT z%};`eZvoV?OgfeE+k^Db#0`ng-LB5sKvc!Y{DlNBBrzd08=Ivn5-;tiuYw4TPZ=d> z<rAXo{<)eXfXPa%h-F3xJLD%iAWVu+FoF%rWqhGPdlGH?9oHS=Ac{mH&11s@wn-rC zo~HJM<2X_Qj96C7n4Nm=_m|Q`o!B9ld&^k?UKf&zU2NhL-C#uzl2F7*xFerrG9a1f z^I-#^Jc@zddFO0S#jW$ELT%2M#}@h*K8GdFy(UPzV$B^}7N!6Y8;{g(&yFx&=r8pg zinvlmA8>=e@ujgGvrdmckvGMTb3>+@-{-HD7=7sXm(xQL+xDYr9-cFjgn*Luds~i} zgbnewZYJ&Uo)OLn*7$<fP{fiTlODRx*W*pmxvbr?ifEvtvhrzrGb4k&qKA>t#F7kA zjd)23=le{sS!{$f>iI(cMgE189@aIrCPC9lt@UBS^NBy0IBvlQ0;uJqUye1l>;r{8 znc-*sTmd$h7mh10vBZHc)O3M|DmI5ge8+e4A#*3^@9=xv=Ng0ImQ0YsvlI4UpRpCL zWlLQjZ#@kzJ<gNL1)Nf#PHeB<P-{pfndo8@pJ3R;MdFQetd~PTC8Xqu>k_R=a<#Wx z-u*Mg$f@y>fr%3FMW*_AdyL4r!sM;uRA?o~)2Szgz|tqy`kVl{PlHzdj$~L;i4m;C zNUS^)xaVaplp^B%XDu#3h3ewiwQJeJpnp9}i~_ur$HntG7laj+y0Nis;~#Q!Q_Hs% zpL>8KG7NmDc$$@l?*P^;qUCLf$gKcyS7-%mG{Ghw<r>EG*NocvxNC)N8Csjt>C{Kj zjTF63(I`x1XYdy9@^~(g<d!-j?}p2Nt{3TWUjF$-`yb|X%_YArIp-{SrRc;4kVtfH z_^q9Td^a`mpzP#^S2K7WZ^$wj|H=fiuP;2)?|C5KaHEDRRph>HKmFv#8NDpA0r*$x z)!t-srTXD4=M8a*MO0R=iu@ey@1JIJDa?{ARluvjU$nhk4LG>UL;wH)07*qoM6N<$ Eg5h4=LI3~& literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/eye.png b/android/app/src/main/res/drawable-mdpi/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..34a1260773868e6103b905445ff95bfecbcf7a8d GIT binary patch literal 631 zcmV--0*L*IP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0006mNkl<ZI1%krO-oc^6h7yU`881nq9{bBVg`Z^nIh55tcLmlZbGY7i@p{@ zAQ>*Agb0K-vnqrnTFkB%6SbNPA~%hhMNA)LOhjNp4Azu3bno#wGrV%GsfBHQ7x$d^ zJ?A{<IUkp3=lpL6xDtSf@R7lA%o84ky-P?s)sKnaLA<qCW?wk=Q)U)@_n$uiL;aDH z9?3M3bi?>VnBPDu5Q$I+#35)wz`wSL$I^?bWJN$_6&j3O6;G}M;3Km&U0=O-W^V4$ zH-A7Z77MQAf1V-n#z5~NTRfR|Qd5TQCd0n|@C}qULClY9t>B2`B)=M<(9y_cBphd^ z`<-pglZiy4SO#97!TT^;aWk`MUsL}QU@!Vbt~^1Ohw1035tGdT_C=!&QgHKnx0r9G z7wmCk>m3N+BTvq9z&ep}QqL?kuq$z7f7P_F_M9I~nJE|*<h%huA5R-yWqqLeqQ-(y zT<=x-0VLWX^rfa|%ha??DR_6vK9#@4#&xFUa;54~VkiN+fXs*8<<(La6RJHkx{<%X zX^h5FfJ;>b)baDD4@)hrZM!g(OD(Mjdb+#Xlet{3c>LIaonQT4jS4!@_yYPD*P&#y zSvMMu?rvz@{{SVOf^90ZVBb}&%_*Zi-`endO#60SRnzSJd}2)<%^4aRu3P)HGK!_V z0s`%ST^kdyWwDvCI{Z>tmekI|SZwJ*iF<JS_hK7BmCAOzzn&jwN8ertHUMi1@HoPg RtDgV>002ovPDHLkV1i449x?y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/eye_slash.png b/android/app/src/main/res/drawable-mdpi/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..621162a17905b63a6d78312c2105951edc5e0ebe GIT binary patch literal 820 zcmV-41Izr0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0008(Nkl<ZI1%krT}V_>5S}@Ab=#DzG}IKelne^gwcQH*x&CcXf&B?V^-vV` zRQ3n;P)aY6K@q4AQ6wZt(L<(SP~@r@>YA=ZAPJ^Yq4i)z>+jw(&AH2!h3KirI$X}r z%s1cp&dgkZe{N`h^I~1sZ832vbqUF-$y1-k-zYBIp9phxJuWyS_oJjtKujl~NCYuS zNIj7xnuT!8Oa}sw0jNxXsI+)~Bh1Y!O)=&duLJ|~Fc2-H5ONX;B!4>)aDySRf58Ym zVApyL#h!t_juwkhSR1uE-37(Q+yYCdqe#>$(5A<)c0>>PIurf<T}f-#L^~LE(U3+f z0>vVNhd}%Y=RoU_?JlffMNO<|LZG&Hu&;f{^5wYmPm$1uNzy8mvJntQ>_Xc;FO91J zc#KsY8t`>KQg~CLbGx2FB=55_|8kpSOE{SVmG3OMi-ybvDW5QbcV(28*W2s;Xcy5J zSVWHj(2(US+N7|i!Yo%oCzEYPO>_Etykp9thI4CC?g|GDeg7$ICD2I$SW5^^eqZP7 z5CXvE(i0X*zU86~5A}EDn+iE!8<Ef#PG$v62V^Ugoj}A&evh9OJ+*vl_4&M$faGUo znd%%OM7+f}cvP;GQ4O=&(r5sJJk($x2P8^K_qc`HLx|9v<t{u+1f?Xzb!9QzCL=BW z=E#SsVh*Ttx(nYC;B0Vyp@o%86rzj_I>#yxFlo14M4Yw=vt0#eSaA(s^331Yaa-BV z9IB1S<B9tEZT1L1{fi`eXjM`rKYN>=7Gc<g&-ZdvVO0STj4C3k;8e8PMbyFG-Zry+ zmIxIv$5n8i$!fTHpKCVlnh^|MLKK7icZ>s}9Z06L1{bHNhyxdy>_+*n;;QQEYN_JY zFbUZpnp<DhTb0aM7hm~)Z0a&U`8fAwY6xo1Tx6Kwutv1o>j%4Ed=B%O+a-mZk6N~j ya7)|?2f5uPu|b3+CJx3pj8U)GI~VT%zlUG?Dm%RUE`uci0000<MNUMnLSTYyIC6~u literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/hashtag.png b/android/app/src/main/res/drawable-mdpi/hashtag.png index 890f02c737654c36e30de82988a79e0f89689d35..e4a79ec30862e61bffd04c8b43b212eb739fa84b 100644 GIT binary patch delta 137 zcmeBUoXn`$8Q|y6%O%Cdz`(%k>ERLtq(wlOgAGXbcFOWjR1}W)@^o<wu@Fp7aA5u{ zw)O}Ap^QTkF)^=Z7=#3A82sQ(QBm9D!O6O+TJmsF%*OV00@JNl?Jl_D@MVGeT>Bq~ m3rv<zkX!x2imhIUnPKTBjl)*5i!K38XYh3Ob6Mw<&;$TLeJrm4 delta 132 zcmbQt*vF{Y8Q|y6%O%Cdz`(%k>ERLtqy<2jgAGW^fBv61QBgR`)zif>#6mDR!GY<s z_<9@WLmo~VJ~^L!G_+1U2*_bjo;BHYLEnzX!-f){M0PVARmy2>S;H{f=BS>8X+vY8 giL8M^z#Kk?4ZK>?U3(iQ0u5&HboFyt=akR{06U^5+W-In diff --git a/android/app/src/main/res/drawable-mdpi/icon_facebook.png b/android/app/src/main/res/drawable-mdpi/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..b362e2ffd0d97236ee03ed728a381e3eef90a69e GIT binary patch literal 498 zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP00050Nkl<ZNDX6j%Glh_@SmZWf#E+Z162XzZw5w&UMAWY4st2b!9a&IQQzgr z!SJ7z1({1Ko0E;@o4TUFeHA&rkH3EYWBT;%7wg&UuT?&O{ml<Ei);(xyw#4x`KW0# zGBRqz3<J^4bIzSTaOSBoOpGiG+{|Up#QUn-zzo4h1LJ^nP#B{xK&&p3eZb1X{DX~^ zNeO1b-+%v~<aHhScKgvs<$wPfnEwC&4-X!Y8j^h=E6(!_S>MeEA8+4y@Ieh|5i`(m zMwrDgnq&)DSQ-DqG=u1$fBybQ=A*MowgBA#LVQN2^i6nO05ZVAMCxo!vavkGu>Z`! zq$!AG@b~}!8NR~!VdXpjy!-S^0>&pQlG#|8{xLE#h(I)91T!a4juUF&kN2N{vB3-n z(Nqnh-+%u-1^NcXOrm`7>irL{w;z9;0lA2sm6?r)i&YQA27$kS|2_He<<|=k`_7|J zpMaDyhz$co#Q{t)h*nb&xIMkXRuv|8{^pwlCH==8V0?5M#XIPd)ZmX=Krj@CMGygN of0_Zt-%OyU1p@;uEP*sz0J9{8$+rr(hyVZp07*qoM6N<$f<P|kW&i*H literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_github.png b/android/app/src/main/res/drawable-mdpi/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..af76b3fddfb8c8b5865ab3219f86176651623244 GIT binary patch literal 914 zcmV;D18w|?P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0009?Nkl<ZNDY-$O=uHA6rP!FvuSHZ!8D;sA+&;MMX0yly!nR}Ek!6r{6Q!b zyeX)M)=O_56cN2x50+k4tlEnT6$EdEDqgIGSjp}N3ym@Dn%(hx%kFlPCN>$Eyf^QC z-#4>we!|&*S~8hTIktV;W$YwiJ&dzX4=&kH*l&WdSuGNIzOu6Nqm~S>mgws0>a^F_ zZ%ZaGBCl1$C^3gKJ{5^Z$1|A>O<dNtOc0O92c+vf1**Lax&0u|g*IXs#tRi%wz_yc zc2&CW699A-RHv^qDbMX_Yg;Y+`SU5@gkRvV{23AybI?&@&xhHzNg${b$HkYN3BH5^ zjB4(e#hZ|GaWBUBPA>Rm1Tus{b2#VUsgq9u$_d6Vc~~y)QVdOy7HN6|`k@Vl32V-! zT=;BRzYW8B+^k3U>0InR(0edym{vD+@+n5StYu9RmN=y4w{~BXaXN~B?Tuw5!u=3j zjAc#pL4dBuCStKMm&yAI)@hFDX+h^)6(@k??y3T;%aua@ssL)FE&NNgndAI}VdQ2u z1NC_x2V50R+O)|%Y7m?DRvkCuSK;;`=3oCnNy??bZP-?Fp)GLKyrUY3Nx^mnextUM zOWF{ZIaNqX)~Aje@xeV@j+d6eky%uOIL`y=bh_cMAP%^vR4vjLxS8+OAnyC_VxjPG zVq&7KbSkFOCoFM@tL8|Xr&6h;y|KQGL=yrZVY{W2amM)q3V365bZia+IB{Fs(9n=J zKmYESbonGWhbj=Ih#pO29~g^w?3qUWh9NrFD%pi1lQUS&5z1lGf@FN$G|f9S4jNwG zTX^1XLbx@Esg`p#ZJ4<cuM82r<r<P}cy5mt1)IbhGe}=R1PHVUAzrIw@->aUswIx} z8Z@sH&YOV#iG;?6F{>?IdEU0|lwp{CLTl<pPh_*%F9cSb5c*ej9QdR`TEV|txRKdx zZWfnr5C8|uev?SVu3&{l5IX|0YWw^9ZFNjOiIaw><tM`lXpHydB^T^03ezTC_6YC# zlIxTfX)}F%Xe`U}_Ad;eEW{-ZC02fmDM7RA(U$#K%`}E3id7L~`FuW@phQ^Ws4FMl owvCQ3N_D&z5V;eCsg<YrKLm74Z8R15EC2ui07*qoM6N<$f{<^cx&QzG literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_gitlab.png b/android/app/src/main/res/drawable-mdpi/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..908f0f31af7f51068551c58452071a7b105d17a5 GIT binary patch literal 995 zcmV<9104K`P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000A;Nkl<ZNDaMJ-Ahza5T7~M-MijhzuMJG0~2&t-H1@=Ln<YWkgzYYGAjzA z*Pxf^&6gf}h@kf%=nLwPD5<EZh_Z6mz$AAyO!I>@weFqf9KE-rZDcQ<hn?Td{AT9N zoVhH(|2)(d_YX8ychQN4z`xcVY^k*dnyT*8=~|y2D|96_?lck5_QBNfF5SKyY=4_+ zCW88bzL_05e^CJ-Y?V$2=A};jJ9bno!n}0(UIFTC$O53f(m_NmOIvjVGD&J~HVI(& zf^Q$SwHYqYE0BIPT+c0r=N*)v>i^c{lKv*sa|1hpAXoA@M`3ELXPX=26>t{D<2t}z z{+OI4W8opIamie&0Cjc>F1_DNu7I;wZ*{Tnm!?LGphoLiITw!^rLGDLJ-l1T&8_kX z40xuI^u)V*-IfUtJsR1;mn+bH99xoZTEAJ^_+bI8Qm1Zi6z)r`A77TeFV$GRNw+P< z!F;E9_Irld6*gZQ9;-I&>(Td^#2IIT*69h5V0bWLMEK#nw_4;EU>8@~U--s_x?SXB zH$}lTjwNG)ZpJq<p`2nAMn8_|M4n=i8KgJ5O~-){bpMvzgwGVE2!F6qx>;E(9QvVN zoQbPp9em`LY&}U%A&u#}jzeK*Lf2(1&mgUGvBM#!RkpszB~cdDU=$y?x|F^ERp`2l zIT`u0c@Wyc7(O5aHfW|jvcPlA08~KrPy|ms8$xk*5Z`+G0x)yvjeApNS_w~_JZf0N zdoDyr;y4O8i->d5$q$NH232Tbze^5=?awZDWljN&x)?3!!%~cUI>0OnJYyW~Js~(T z86CZsg<)()z+Oq>BDqiv-!TiPq;7_&OiKOuLR2nwH1I3LdE7ubN=HlxpKp`Vk-Q>x zZ~d_S-Ahqq)*!+)=^#NBR86lG1}HTxNJ=b^-=YMIH4^iqcJsE)7X!R1@<O$E_^pbQ zey@O3aM$Z8ZtElnqn!&)LICPuEp|y?Fib;I%99(RPYOt%Nn4o9+k}UB?@wXNi)rOs z_~B*9eCSTB%$}v&JhmE4LJy6TmF_XrO-rhr4_E+`6oWWF^fSZ2BiNqk&y;CV2RZ={ zCO;T!insEUU!qEifFJUBE&I%Dc+a=CctKY(|DsW{di$S}%Y1+AKrco&qKz~Q=cl`P z82ndaZRP*I09?S1<UO622`{UF45VAp$d4qRbC5r<^>`5vB)m1vl=#2degbgSIa3xH Rzk~n)002ovPDHLkV1l6b%V7Wj literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_google.png b/android/app/src/main/res/drawable-mdpi/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..776775448747acde0efe763600a0f7655896c3a1 GIT binary patch literal 928 zcmV;R17G}!P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000A5Nkl<ZNDZ}BO-NKx6h7z8pUw>aM;0^|D)grmjM|Ts>F6pVvypI9wvbv> zNQ+PxiDe1prrNj(5?bi!CNc@N9|%$ta$_J_m}dSkqvGE<gY$0ZzTrKe&rwnFEZ)24 z+;hHj-}k+HFTf5Pu7}T@PNQdfu!u2q0AtC3n8bjYfWa6d^Z^JhMxD?U`TpzVS~wva zu#ysk=lA!!4B$3nuxG7e9!JC(dep{6*=o?`@@sQfHJHgskM$vICg8K$<aK?-PO}*= zTHkbytMdf4GwH~*EduM>G&q6KO5GNdZAy*D$9g%yh-i0idOi7xa!h$6P7p#XGUy}j z1zJEV06QnsM>M^Si%uvAMUm3L?Z_x4&R5Vvg#l{vFfQ8s6kVU@l!i25&Md2E+FMNv zOCa#VP~bdY(t!2sHG4akh8J4)MT>qxiqT3%1T2ng@8(~%Ws@`r%)0Xp2d84J*ZNVn z%PWB)3NN+`&Vhm=i%`HFU91lxuKonmk*Vo0gZP-owri3GBvz6FWDvn};ZLvLF)*gY zRD<m5Ig)B)BmHi4lw0bgFF;^6P00_9zZG{kFA7q$mGTX0kfB*=zyOCd`G+<Brd@_G z!HXmf=$9NI9a4C}NBgLDE;S{saew@`Lf0xC5Omo*Pi;i;Q4z#v>KJW+5$*>!ngGoZ zfc)Wr70PDq_-iR57Lk?F{GAm=<aAVof7Hfu9?cif3A=1mY|@FJc|h4{9TSF;2eZeb z=2@^OO^GB>arc#``sK>iqr4jLnLt2nrDI&;JP3+C9Tk=|J|+x;vj1BspS4#lgYzg8 zh{u=qhRgS}8l6@iQClUe6i&XXx*lM@cWQ8+Lnpu!Iam4u?(oAdt-<+$Mp^Qt{3eY^ zFl=RreF77g=%+}ef;?g+S?4<d;bXTzSc;X>3B0qt+<c1mfkc|pfX`+&I&F)hNKHbV zs8V_82a<N-<2S+JO&Kxj@kHxA^IthrqDXeW6uO24qa}m7O9IL9jowT*2j2MSqk_5j zyc(R>t!Tgl-IwY;#}i|6Q4q?A%uya&*AV@5W!6RN{fF90PxoqbS5Ty#bT>g8)Uu zw}bOd$^6m}BX;=()K9v!33^jQSHWwA5-rA#`~Lx-!5lkM9_pI_0000<MNUMnLSTYR CFtJPk literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_linkedin.png b/android/app/src/main/res/drawable-mdpi/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..29cbe97f9ce0d3c0335f6c53cca11a7687cbb58a GIT binary patch literal 595 zcmV-Z0<8UsP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0006CNkl<ZNDX6TC|Z=tz`)SW@c%zQkft7BWc&y;tdx<Va1oI4pO1PbBb&td ziHUZGgDm>b2ebeISeO_YN*%Qs7Dw4Icxp%?Bq(69AnPpy8s6${2o{PoQee>Q-pp|A zB`7G#2Pi%;k`acR#0>O}o|GV*Pc8$+f)(fQ0}~U(s8^qVFzmbif?RXq`hcluA=F5S zn6ZoygRZ0?!;TwI8D0P_p%kFR0m!hkPu_tsA%j5)0^|?@PF9BdZ@(}+c>fiv78DB# z?KBzs0!-iv<(t+qJo@mJVOfkV11Qo#;K;pK3@y7aGt3FMWRMZy0*ir&?bn|%gfBYC z@cHK-xEP3m5(g+UI5>(zybK$X98nAhDfQHpVpthxkD-ew3;x4m9;jVffRllPm5JdC z(50V$pt{xrn0I9O5xxT1MwA7NjEpEQ>pO6bL7-{{gK*6XhDE3E!R0{8%;iPkd=P^u z3y^*A?;it0^R7z_e}TUG{qH}+w4*ms3>4;KN8uA?0kRK1eE-Gp;m2>dA<sX3hqFNp zUJh0iK2a7R``|ao3rOJae^fq_6qrer1?ZYc;g4ECFtkvLibMBaGL&pO3)l4i`%f@? z>ACw1=bpX;v%jJh1s}ivM$vQd&P%v{5Cfw$MUkZf2N=nWpQvCC4kJL7J|ja31Eh(8 hLlK$6ATxnx0|2%%n%RoR1S$Xk002ovPDHLkV1jp3{1X5G literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_meteor.png b/android/app/src/main/res/drawable-mdpi/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..5489e031f9c0108e2791a1968c094ed7a7453679 GIT binary patch literal 1258 zcmV<G1Qq*<P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000D`Nkl<ZNDZ}BU2GIp6rMXXJ7sH&rDa=aX}eqOgNn9^k*Gn9F;pznnb|tE z#lPBMu__TB{3B@4L?bpDL!$u-H6c|XlkRpAV`6Fo2#GHylm{L(*`F4w^e;urc6VoI z#_u$_O`EhKV3>!UoHOT~@0{;D_pUJ3)|M~a?q^8X*SUN5ink5NbzK%y)u#X=a}c+^ z-7{(!dECC$_iWdUG1sps1M$JZ7h|oh%cvMTbjZrscEN~YRNQKD%A2EwnWpWR<?n>4 zsa;%`HKEXD%d&hiO{?V~e;J0)H4KH@H~k)IZ_fo?UtZSrBAy&q)%t{{J<07@F!<0- z(>K4XNyE4^u4zYynwv}KifUSGRMVQ~*)1b2Ei1_;?dI#pV-~zYL&30NlyN5|M^*Jy zqOq}x`=Yx3HsU(So?Q%GfA5N_mXkf)*jUY}C7VBU8U*_Lr{MH*zDtiC8}}&6b~~Fr z3Xpp#p(-5iWUd>)Bp=K!hAelc8G9$L>vxy;_5C?LG4aUXx?aqSFZw2a6S}^Uf20Xe z@ZwM~_#pSeJ`4)?(-iKG9XXiP9M-h;^gX8Quf+``z+>ko;Eq5j^qb3=g07w?Uu9ok zRPuP5ZQDK(4+ftgU%=zp?g&CDVtR#i+Q}~}YRd}3K5EP#3LSK^*=?Zgeu`ZHK!=N* z2>KBPBy_Wj>`K$TBr;|=j&nSrstvT#0NIKOisPfB5lfcs9Iw}KT(=WBMnIN71hrcz zm(dS@XyhxwVD*}C_z&_ykDXAnBoK+bPxg?iK8j9Hp{ovmB=SA2>h(-!Kw!)fb8|OK zsni{oZJ!lH@$*19e1LKmOhCew)zn03@9A!W@L$1aVSBo<#!^Kj@+&%Oas}ZCZBwyn zPRoi?k0zGe$>do_Q5=sbZbG9UL8m<guwVjm(1UgLV#KyeS?&fM83ccgz*YY8@~y0^ zD-D4g0dfMJ??I=Z(Rr~`sq>U8OH!RJ2zk)qG@3iGC;$c0VY_BoyS@4OAD66MI}^Wf zp%<O5$}1{TeLX$@g6o$B$N3f@otX4pG<BDi$()1DL`m9&b<TBcd&80d1VTHVbloo$ z#&(wZeE&euez;4Pc|1?AHq9|i@+O4sVxoA^UsLmXY;f>C6g~}#MEIV;bZ3?Xpb1hd zR#>U=aUVMERz$JQm81z=em?`G7(&)ng+dAFwHq7v2?`zemz2CTG(Nr_ol}g+B&mLZ z$Z*a*g{FBeH8xi5m82wA^exMAB9<Uj6nH#aP;7?T_W6Wi+=FfU6y5HFCe5*{SHsTo z<-dcaXHm!&Y<u;R6L2JOtuk4@DBAW)I&6|GH{~eG@bzT!910a;lFf8Du~pxInhyBR z<P{b+kWN%%$q6_Bc#OE&Yy%S0=yY2)oBb&@GqVo%Mu<LxE(hq}&>s%J0fBn~^7!=R z<Vl`?LjVc{$bPKt3(z8k!mmQulNkL0QBmqpG=;0>2V5i11!`+w!S^1}b%_JqkRl#P z2M?=Sft8Gdj#l^&gPsjC?hk153ks$2ZTA0x=lrjCG#Gr0{{5&3U2M4c9$u{Ae`jeT UYw(ABxc~qF07*qoM6N<$f;4|rk^lez literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/icon_twitter.png b/android/app/src/main/res/drawable-mdpi/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..4570f1a511f659608660f73b21736832c5022870 GIT binary patch literal 774 zcmV+h1Nr=kP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0008LNkl<ZNDbXpO-NKx6h7y^Q5>ByLXZ|Z7zHibL<B`pyCB-Qs3hYx5>(W} zMbbJ1X(>V5LYNuLk_yCDZKOqLn_3wC2ueKBG)!>rkSV@<`rgy0uQ!g9wyL|Bd+zx^ z-#PCL(Z7D!D?mgTNB*>!gZ)yem-J0Be33~~#I!)f0~JJf#?#4fo}b2C{zTlOkA8s0 ztnOk_Z=AN87v+NN@0HpmqhFHH(Wowx{E9sLjPNPQrYF<M(|&+dHb0IG8i>?6CtWib zH4MK~8GT<!u7r6}8iC$2aknT^YXS5uV5%o(7kJ%mh$n9kxA0=r@W6m1e=HQ{p%aVB zet)xJrr8+9jww$dLNmUCh=u#s)S@0u<#daOwa;JsSz0I@F7F&z5RG}xC(?1p&jgGI z=<vP38R&gv<VpUg{+`O}N33Ls41aQ246rYMlnhQ>iaVa7@+PR#N@Rf9P?4oj9pvrC zrRPTE0|~z>(%Fn5G#9XyH=fI;FoL?~(Swyhu<4CtHswc|tX3fhKWNqzGCdpB+vz*T z^e(XVn+%{j1IFLpfO>kuPK*YA`~Z$!`x@}v@W(We?C{2T4unltD*&f{cOt7;HA7)I ztgtN_-;t@T=nmTiJ)nXi%ZQu77}kXqwnJkA9y=GRuoX7WdIg`GS+nBnJB10@&tTbg zY`9*f)&qD?$4)-Q_Bewe@1u%azP(MXI2~-#ux`n@Zpsx}jgcNKwyLl}5shyLm0x!3 zL~oG{jP)LP!cGy@lheoX#kRX5=dq<qCg3|`DqzjGI(F$b&wC&0ldenGuwokU=Wz&& zZ<lXe<_DPfSH-Q4v6kwotyKLCoB9@;WO?PPVY0C;Q>6^NMxv%?ma=-k*wrJY^uqii z2)tm%T{(ib?ZN7-h0{4QYT8mV*=E;_b~2l=ga4oY1yr*BeS1B;jQ{`u07*qoM6N<$ Ef|iDIJpcdz literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/key.png b/android/app/src/main/res/drawable-mdpi/key.png new file mode 100644 index 0000000000000000000000000000000000000000..b3132d598edb3fdac15fdd39bbaa51e5aea8127f GIT binary patch literal 787 zcmV+u1MK{XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0008YNkl<ZI1#N=O-vI}5T4oH77-Ib5~3z*#2CYYl-g1hZ7m_x6BrH<55{=% zVqzqmJjun27k}Vnh#U;@zzt$T6rq%W+NDqq{t==vMnOG@QvS;Bj`OxYETs@g+~#%O zd^7XCc{B3>{_}^KeD2e=2Oya|PheF6U=iD=R8@T(dpY<j(>I&Gj?h&RyohAA5l{gj ze&m1!b|@txh4nUVU;d3)Z|`C@B8e$-BglZvM}!n}V$RV?JyOD}thjJjzJhq0iLaWo zzdEJ=X41}3T$5H-UJJ5#G*XL*lo?R&^<QW34k}7hJUY~!X_tB`L%U{F;Dnqjf~?%< zzvc1<=7p4w6MEzxBD?{jW{G8!Hlf`Bu9>d)e-KV&;Whr>lai@0aS;E8IZJmoB8jCk zB;3oFT$Ugzbe}t%NJ)wE5dbrsp|iEMb*=XQtZBRQioji7tDd^L-D&WKE!VM|*QX7J zG~n+^*d<28oSD0sW?Q!n27?*{d|k}<oUE=~XG~LU!ni)9^PIKwYH|6_HZ!^1ed*WO z*ys$0!-fN~nz0{-X*}~(2G2-)x?Bqkg+h7XelB%zp)QDS+6_QhB7z#$6M4>pb0Z@? z^B%u{zqy3Zxt@nq1?tD6k%6p)5_DArn)nnkb8aM38Gp;Gl(W|futOp1cdj#ccp<sm z4+zIpP#VVdaG#9dQp#>}85+15Ntf48+`K6f<nz@O@vO!eTXA~>^^$1q$`aU2R#k<H z7n92mco<Kq2$zU7gYqaw3A2w$PLRWKWb(zpm#yb1jeT_V>30r%$n#ogTF^&i^u)vA zInAM7=JGfc!?d&9Hlg627>o31pq25f>0%Pi>#aU+=D@6Y1Qu93ClsV(V}tK`0=hU` zTm|DDC9Kc<hMYVJ?ZPg)xZ`j3>!<0%2TM9Fz-g{&E-KIxj}AZCG0}Dc{s7nU3(4nN RIPL%d002ovPDHLkV1muXZx#Rm literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/lock.png b/android/app/src/main/res/drawable-mdpi/lock.png index f0d911fdba94b2446e3387f1b77e05b3ec59d310..a87c44950d79d1256e345de6670dc92e5e517110 100644 GIT binary patch delta 343 zcmV-d0jU0%1K$E6iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4Ur)ee-=qZ zK~y*qV`RVq{{R2axM1n36d;|<z`&>tQTG2TBO~M7gy^t2K>9y6t&G?N7cX8b`G?`p z5};vD*yMqR?PFnJiHVI3evU5Bgf0Mb8Qd^N#wSdSj8UwNtWqEhVlx26Ko&vOU^oav zVE&SossI1|p9Rv$!_KH578dpnf7#Mit5ykp`T74M!~g#>j7*Gai80}`k>#<u5Ey0* z3_yu8bi+X6ATf{}hz$u}5DNh?41`4hGXu*3gfdhXLJk&L2zg8c|NrL!Nn;Cem^Qc^ zR4q&#L}MC=EK3F(9x3w{t-zYDh&3}QE&^;8)m_Mf?gE%i=;FBe=su&mEel5t#1-_! pix2)V#7Kwe>56#ILR3=S%K!@yVFnHbe-{7%002ovPDHLkV1kP_iBkXo delta 400 zcmV;B0dM}_0+<6KiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZyde@{t7 zK~y*q?NdEV13?g-+0$GaA&p>bnMyEfC;kOb@Cd|@q=`QwwSU8?F%V8r|AS!R2ijSw ztzcncrMc{L=ECJ}Llo>CxVyLSy_wtH*=3p#N8M;;V9{ctWtBm6;~C!Ht%cX)b~8>K zbb5Q%;!5~60C)N*R!+5Xzx*VNf8*X+IsWS36XSt>v)%~9S5@0lG>1=n!Jq}NP*~il zZak)0&J5zXUzZ8{X4<c%$!b)roGhg{^rY!TP5}lg#PnRR22Yt~h!Re;#FG=Ja#$dj zWKHibmyMWMwNl1Nh7Q`D(^b%5i@^cN&JgoU-Za9%Jd^nV<DAJmX>4y^W+pRWLK&bY zv|(BkR30TcK%9i4yqe5OcZLO0kMYb>y%uWQevHFzRIvkln;M)=Ov%4|{|gW~2T3kW uOD@dYZ<{Ed*}U!)ARx$#ld+zaEWQD*HhmO_1eP2C0000<MNUMnLSTZ(2(sA# diff --git a/android/app/src/main/res/drawable-mdpi/mail.png b/android/app/src/main/res/drawable-mdpi/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..de70ea51f7d9ba2944d6068b7ae0675d894af156 GIT binary patch literal 445 zcmV;u0Yd(XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0004WNkl<ZI1yuD7;%6R<YPk<d(VH2|7S7$|1U#U2rx1}VfxRQcK*!4?JOVz zAcir#XJlfWOOAp6|1kuC&0t`V1se!*8OX2;rw%ocW1xYV9mD^B|LZ||na~X|G_mt@ zaB$#27f0teG&C?7n%D-Ti=!B5Wa*&tkKzCN_h0^<H@0vzM^_Bvo0vGNZ`iu;$Ug># zHAZH3PB3v0jbh-r;|K0AF*3U|GW_TK`}glr0~6a$Pft&Fm<F(`Oznz)Gyc5*6jNhj zVv0I<>d-!zJcvdy5F~K^^npFx?1H*L=G^}b3}w$>e+9c1?yCR)dw@w}J3AAr_W4r> zmxJ^m14yJGivZb2k8b)5q|yyd9ajJU|939Pwf`9zegh5q3UU=TgJ4ErxDX}*qM@$U z0W#;}a}}~4tS&@W0CO#}7(O;$7vj^1OOEOWLc9#ji=gZSO7Y|XkX{C$86dr213?)Z nlow&yhh#&cg#*d@hKB|K61<4-Jrbe400000NkvXXu0mjfCH=dX literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/mention.png b/android/app/src/main/res/drawable-mdpi/mention.png index 4455b43e8999c322b2b4f2aa24bdf7dfb0218e89..d02eef2531c3097d17120327a0bf7e309c7bdf6e 100644 GIT binary patch delta 704 zcmV;x0zdug1jPj*iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4Ur)ee|$+q zK~y*q)l|<<6HySJ*)12_SVV#m4q!wuaw*t0;Zimsu^4|~!qo)5aFD=1Lo|kqG4bG4 zjS)@IEu5rEn-GoKCbowv7mb=)5^8sxZ`)mIt%jq%<n_&a^Ue3ZH#1wJe|_+u1fHIo z>yXUbDTgE}B>liKanT@t%%j6Ae=nDptL<Xj5{|{JDMy?oB^p$cuf&pfgM|n6EUagF zgN=pFw7t?wYP23iqKWyM)E*Ma0h4*AGh}pU)9X=8*f@g^7+_oDn-oGBfU4jTg^bHt z+y2rTfPKWWI;rg3QMG4HHqY%<>JuVowaquLaXW>~5s--pkH!<TBy`3le`b23>lN1y znwO|td!?DJm}4hTc{%l;i~=BM2J?bP7Ku;X6QNtg9L02Pq7e`R11w??>t3QiJ|U`! z0vrq)_u;H7lMBqod^Wu{gb7<oyH)uSV1PvoVzI~Y3H7FaRMWQYAFfBA$;`QII(5U{ z>kn*Zs%Zao;mpNqj2qhke+3%r{ug0URi+o9igS9wj<@#}DyT@>XO?BvFVO<%(@sQU z6W2U2Y*iD~!iC4jlU?!n<YBGqjK=;>h%Z3F;cwraiy+8stlic^JP>iNM`DS0n6R~~ z&xFX?saCdjo$8j_!bXRl*T*k~`Z?)Mc}HXkeWv-7>_%!@b9R+Pe_mk1);vxI0)d1+ z^Qq>16?W$Ns<vBw_<e}&ejB?H+jjAj3-8Adh5XUpflvDMMc$R!-oAmt@X)bbp-^z( zM}B*Hjvp$O-upSj`QFi_&~yCl&q1G>(w?05u&ry8LeB}Medm)mdHZu(d!(X?2d=Dn mUDwXNyIm^gJna9s7XAdT94&$vHXob-0000<MNUMnLSTZIBURe~ delta 612 zcmV-q0-OEC1?mJLiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZyde<4Xk zK~y*ql~ccKR6!7)SuY_`f+=!`kV6h3T8dg(g{L7x;J_5-<j944c534xHllE#ol5?K z<bsAk&LYBrpcq~ySRARWv`O@;i^W;^qli0x-;);~!4O<nc6MgI*_m%<Rrah_t9AIx z*B_V7?2?Kdr`be5sp_kdqk}Jsf5qbWG(^*vrDv-%UTj`P)x=s(^#kqR>?CwW=*)@M zs+CeR!R-cEe7bs1Rq9a8TRwL`41%AD6VFBz4QQwPz(i_hQolA=dPsd7fG@+aqUxrq zvsYfzu-{r*em-gDUjkTWCd!((d*41HwG}At5Ew;KX6tkJhN(>Oj(Xm>e~fN;Z+M_| z7Y{x{spahOkugWY;+m0m0^aO&*OAd}+&8!>`yE?A>XY<giNp}=$TkT}YToQ@-vsRi z8R|bBR!Vhl$^ehRH^%_<C5BkXRwZo5(aleQnMOE0-Q%5$vO0Z>SBL&+M2Ly8i6S}C zZ)AM%a^ij=(_@Z9!ao0nf9N_4VPkD=IMGq|=FfxFL+y6Ek9w4F7WYAIEH}%TkH?bF zonUS307;B_Kq+w$1O#Ut)I5fkw9&%%c=)<Az2!KboG=avor56QDdck(;q(N6bKH~* z`RsV6zi%8(?ZNvDa;R13W)@%*`JX|ee|p6Ms5oep)1b7x8-U7xI(;UjixKdrkopBQ ys1nXzeYbA_8uor?1VH;`i{H60nr)J!bb#MJ$rIF5vfo_*0000<MNUMnLSTXoCL=ol diff --git a/android/app/src/main/res/drawable-mdpi/more.png b/android/app/src/main/res/drawable-mdpi/more.png new file mode 100644 index 0000000000000000000000000000000000000000..1423e44acc9418aa48b56f211ef64ee48f2cf735 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl<6e(pbstU$h-r;B5V zg<x`m1nUi_2mk;7Kcvv(+m~XvA~C+fghSY5N@t4niiM1?yqeZ6Zi{^~(=k-siC4N; o<kKUjb=f9C4;&3oF|;!<sImE-U9#<}BG5zzPgg&ebxsLQ0AYwLvH$=8 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/options.png b/android/app/src/main/res/drawable-mdpi/options.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bd9ecdf3d18f9d5818859d6cff8587a26df515 GIT binary patch literal 987 zcmV<110?*3P)<h;3K|Lk000e1NJLTq001BW0018d1^@s6hE~sv00004XF*Lt006O% z3;baP000A$Nkl<ZNDakTOK1~O6utM2wYG=`KcLoHP`U^)sTmWIqM{2?5I=~;l_Dw@ zyL7D-b>T)_>B0{}wJvm}f*%lE6e*(lO%inxRJ5r0X>GA;)lQ!0O`J4o(<D>UI*WO4 z-kf{Sne)EG<lu@%pEsIhZYPrKCCNG_T13RNrKC^H@;%DeMB2TXHQF7w+ud7EYUC(= zg`)8ml5`BD-qL6bVKVc5jkKeFzb95Krl^2uG#SJfpT(E0DwbrtcMyS4x~9pRBf8%B zxe#t#0Z${zz0BzgQp)N=flk^$@`kI#wv}FQd~}=`-JqUBvG@rhv!fE^Dj!^Eki+Tj za4fk=J?CCy90)~?gYfNQE~sL4=5LzRR_nUwxt%jlKq&TX4W)-4LUEN1sCdczs&={- z^msgdDtEREV7EqT^TMQ(D@G}o4*fEZtE#%P0wS@*eoQlWrg?Jj;Assd63emz)Yqf2 zeR63>vRf_>%VSvqk$Air1FvobG6gj$cZ8&@vbsQ;ykiO|^C;lLY%-D?>@l!0@9k7Q z$n?g40_2iXoS3igv9xwz^BF3NWl92fqbTOzOLTj^=;`UHvFs=rA<hK+zJ1y>+5|BJ zh2eaA!Mr)EfZNT)9|~heT7g+4`uqFmjWiXhak|wojK#Xo*M)U`-B<#?9PoR0*4Nkn z#A@1xS+%f8w#+N0xx(dgeJKe90CqM0Hn}^TNVwIeqH$F-Go@54%2PqzcL3I#;b@{A z*mLFN#3s=TH?jFdjjsrDl@-L?CxqOxvZ?8DB$Ap>Vra9z!h02Ki3rEyYU@5+R-O## zdPV>i0$5h=VS^C#Lo&An{l2>@Pb!tF9vJ-D2@$&-kSpg-+tcuYlRymGTJ*^+EZ=)T zK5Jm`$33Uy79WcTmIGnKSerJf%ZUhuRVN+@c?&@ej$_qK^84mn4q#+=!;W`Oli;hN zz&W|a!+bNq{KpcYMlYt-ai;<%iihogXd0hX@%9)XjO5D@@nWJ$oy39Xe8B5{nI}NG zKtelYsdJLeDHbQ98P!_59hP-KH3U|89$}8P*)J<zX3m6L?c<orpC>>y1pG~xSY-M~ zJy+_&Apb5{wB#O0Rc>n<79y$ie}N!vyRI)cMstmEzy<{M<ySNkYoYv!-R88k)(PfL zLAAj`<SO5|4&;*kw|~Q25vrd1cZ|oy*dwv!vI`r~$BF(O{{=R5O&d1Am-zqy002ov JPDHLkV1g^b)+zu1 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/subscription_hashtag.png b/android/app/src/main/res/drawable-mdpi/subscription_hashtag.png deleted file mode 100644 index d3719dadade2600f780f2099345fd88e0a84d45d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4v7|ftIx;Y9?C1WI$O`1^db&7< zNJu6pG&EIqhy7{am}s&|LfB`5z}b#9-4l{F*qHI2NOFnxt!-s~A;}Q!D(?Emx-t)_ Ok-^i|&t;ucLK6Ug$ss5J diff --git a/android/app/src/main/res/drawable-mdpi/subscription_lock.png b/android/app/src/main/res/drawable-mdpi/subscription_lock.png deleted file mode 100644 index e345bfdd6ae1b51712023355bb59374aed85310b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4v7|ftIx;Y9?C1WI$O`1wdb&7< zNJu89G&C8fpW6_(uWq~KiQZ-|-Ah+P)|na_{^WgR?8qwV(Dl#w&-LWg6hr1j0qIqO zYgpC^oajzYPVw#T<g8;lq+sU3lO`}{-u8^6^%m@>9K@1YIu*GWXtRBs{7C7*s}EW& ul1*>ia@r0aU9o-wYns^^T?0ESUWT+c+W*#sTbTkK!r<xZ=d#Wzp$Pya|3g&( diff --git a/android/app/src/main/res/drawable-mdpi/user.png b/android/app/src/main/res/drawable-mdpi/user.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea8662c96f15362f87949cf65af3d3140d522cb GIT binary patch literal 599 zcmV-d0;v6oP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0006GNkl<ZI1%MkF^dyX5T4n$a%zI4(*(?EC1R1R#0bJ(mIJ|n7K#z=Jp{3` zu@Wo2L#)Mrpj@k<g+*L!G~DS4;(;kl3ON-t2MLJDzHw%cckHgb*a|KzGy8q-`}Xbk zh6VW7FZ|mEE63(8AkZ0EM}UvlI^ps(jhaS!wYdibw1kLz0I&>13#HP5;>PFR6PwPl z5!K_3lN#s>I&kN0Cp;*(^nwXz(^(Bc>$9B4x5939%ZQ~HOgMvOtJRPI_5)(C-EL2e zDDD}HIRj>@)er&KIln_e5af+UdclM<ShiXX9Y;N4;jY0bx@$z6Lw!#$rRbr-vUTd% zRO|k2AiP1YJ1at*OnNL>eA5YUW{u3Vb%(81OR?DxB2q4m_d1a-O3(Ri#+-4;)Ia91 z*=)|_3&rc-2cu=q>m1KuxcVww;@R6+|M+R1XYn#~3;RlC$EzG!>2|wO(lhnR9Qsbq z>=_X>*yyQ)&i&Qb?bHw-tp}$y>8rfkCL+8j<kTrX{hvwG?Y>g?uT^S3d9~o;HfU+Q zdgGF;6-{zUDnr!J;Mw~EO1<OVy2*vfKIYI}1B9=!CPAh|#6!y&o!8N?_k$sft2MvR zq9LE}XiGym{zK#k!>CLU?GP;1Bn(p-3htelpVedSBSwc=%s&L+!N%N{hDPxV5c+)J lAKV!?TzUDtpYZ!1+utAq##-Y6C@la0002ovPDHLkV1j5X8~gwO literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/eye.png b/android/app/src/main/res/drawable-xhdpi/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..611c8aa09a090d8781dec9d4eee848338e7d9e50 GIT binary patch literal 1307 zcmV+$1?2jPP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP000EiNkl<ZSPAV{YiL|m5T3can{5*dH5HRe)Tpf}{gI??Ru@gWGy#o9Y=sp} zRjidzYzkTwe~Cf=L<s2*tL8_PYAj+yMWrQZX}d9mHLs>Yf{zx|NSZ|Y!p1yz?>KXB z&h6Rk-Mj=TbT1?`=R0#|zB_Zyxw8Q2C!K+G2GSY0u`__nef^?9XtN1a0%Qh&a03FZ zA;fI)heVeM@FFV%fJT=A*xuI_=~+&!B@rwx4&~0Exf@K_K|t%45)c8;fdPknWHfen zM@AOAc2NX_!AG(uX2#!Or!@qSxmf3Jb{ue=@dGP;neRrU-(GUF(Xj;y7H!^AVIqAD zM7jDx(Gj5^34h?y_8N%8CYe@11C4AG;<-Sukq93Epdv9(SdTbj5Wd*g)7F}R&lw~x z(k5$bYmKjto~Y-Hy{f?+1uqcN2Oh7d`E)dLPM=Gq7d{xuhZt1>n0wgYZMq#3*uSl^ z>@|*O>bTNf35LVrjI+OwHWSg)%8=7Fi3D|7{?!c~9p7Aa@Fgh0V0h(ZZ1iP5TyJr9 zSE;3lczAt&&T}m-Ez=59GKrv_xszY=A$Za;;!+ZLcl39k8c^6=Sr{mJoKN#7MBwL= z4j>vI@yTuC;GDF?ClDyTYs#cg8GTsIaAm&UR=M@5xta7R10^qy#p_w$sm5H>qnX~^ zM|(Ptop&%7Wn^gZY);;teB01tJe|iRpJ;44Sdw?o9mj_U2gmd!LqmUDx&Pj~o2RBB zpYej(x%+<p^|w`{=Lf&jZ4G@;P+Te{-REG4M{dsYY>!4;CLC-Y#SgxwglVF!u}S=l zw@Ol_B9Ta}ue<F9K4>3mYxWfewuH4Y-%PVlAW*i3-}*f@=FI(aQ^x9@;>f`kP~!gS zj3g5#$(Q;|NjL*i{`L8}ds#XsnaDg~bFo)A1ZT{dTHd&~3e0ac;q_v8zQbVcIopTx zKQ@KWI|EJOpu4nTg31RY4p~MO@4;bff;m`RX05!++C<<@ZjT6zJ-yMkAJv?zH1S|T zptN4fDw(s$ne?`+E#L-s+(yqtB3CvRm)67yjtF9L0oW_LLr@0lG06N|>8T{Y%L*{5 zZVIOBz}lfnhc(qwSKMu%ilI|tgW#B2X(GNapEosjm)r;}`kCKWVo6NpPUqqf^clWd zJ{W&lMnpLivGFfLp^$5a#YXNq<!~W6pRL4@SbRO@Sbms;#bws1L$Iss#6=Ek)m`TJ z!Y#i%W;Uiuy<Eb~^5m?a)Pij+TNexQZO4FeHO((mV{@?)hoB7myT3ooqQRb$|Fo;9 zxb)Db>T2IL%+}<J@UEa|=OxMH#K!GwB0j~p#L#><oat(7(Z<*IpaQp7mc1^Y9W~~y z|4jV!Pp9Pbq%b9W+uMiPVL88bHDjGz0sdmhA9M;Pb7G_Hl@wp%Q+z8-VoGc^Rx;^^ zmkIY~0j{!>H`m^h)!5qFI;9*eMOIW)_=hk2vzx#3?<~7nPyti5TU^pV`EP#);pdC( zjHMHgAyt_~ukhx+UBwW|8CrU~r8`K~u=2i&vt0)Vh)Toik%kpKcEbws>^RX{{%x{} z%NS(4hxkAwHYWeIVbw`q*Db$J^t%1gq?1(o|Mjy|#Y@X{2GSWwXW&N7z`u-U5u}Rn RqYeN7002ovPDHLkV1h1yd+q=L literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/eye_slash.png b/android/app/src/main/res/drawable-xhdpi/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..6751bad025c8b708ad48c34ce2ba768283e5a6e8 GIT binary patch literal 1886 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 YFMW{?zgx15ZvX%Q07*qoM6N<$g7o!^82|tP literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/hashtag.png b/android/app/src/main/res/drawable-xhdpi/hashtag.png index 70a5b3f63cf4585307e7952defb483aca69359b7..d76738e3ae23e5316c0c1a574b45f3dcff568d34 100644 GIT binary patch delta 218 zcmaFB_?S_#Gr-TCmrII^fq{Y7)59eQNNa#F2OE&=`L`o?qM~s9EKe85kO<DV(+&9= z40xD1*QX>sNaXSPBXsSQcPgtQ|M3v-(#~_4tFIaTJomcpnC9_)S6AHKxclC#e-GaO z6uF_w=g3jUS@L)3^PuvB>;L9V(z{sEbh$dTddlvIDkZxlt|>=yI31;DN+@VJpfMhC zeo~uga3n`kzObfokLR0Z!p=2EL^L{Y3N@J-86FX?VboTYlghm}yB6qN22WQ%mvv4F FO#quDQ*i(Q delta 215 zcmaFN_<&KdGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBk;lx~Gd{NCanc$^ph_ zx^ae+AKE)hMa-I*7#5V{V#T*KqP6qt`Ib;~Syp#h11YAS2UogmFWzJ-Zd8ltn)uLa zf?ZFnq+j5oFPjf+mhvlZ5E5v2kZJap)w8tu#csp9!GM8VQie}mi=*%bE2r?%`GV6K zk4#IM@=E@LhD7Os42~Y%HV_FUsuK=e29t{ut}rfEWMJ^-^y>L)eq0XdRt8U3KbLh* G2~7Y$NlKjn diff --git a/android/app/src/main/res/drawable-xhdpi/icon_facebook.png b/android/app/src/main/res/drawable-xhdpi/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..e9543fd0f48100d63e681971a6515240768ce66f GIT binary patch literal 775 zcmV+i1Ni)jP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O% z3;baP0008MNkl<ZXa!^R%-tsX^Vgplj0}t({~7*sF$@6!bn7>uTX(Rtv1G7-91nDJ z5Kv$UI340dXg~)6-Oj)S3i%=9ax{m6+|D#qk`0>M!Ca8rnXpL=C9zQt40LR<45S0} zRYk6OSjoIrmlt5>;bvuLVqj$Y{_FSe??3+i`S$bo-!EVP{NHu*3E!b}&x~-nb3i;` zXC!s5G+v*Bi=9Oa-C=?Z>?lGU9LxuR9zYR8=Fr^(l}UyNUCd<cfR129b_ls_x_Thl zU*ibS@%H387Mni0l|rI|oG+t1RZXxtf)X*hd7wPO;5yKu9F#Z~n_jwkKu<+T1)BpX z6{AZYkP_p0!pzJhgU7Ldj$e9tXz7kS(hr|~mj3zs54=_U?;iu+JVO@`$cl5n1v(z5 z2hLo7b)aV2DHl8*#3@CWBqT1#`5mVVfD+4g+!ewnk57&+9$;f*`iIXEuiyUQ!zYhV zjxHX+=Kzr0-+%web_dxS2|0>h@}nN0S4iWshtVm06V-b2H7Q01to0=^ic4l@Ms8*% zMoC<b`2F|az5o9h{$i7_m~!&-#hY*F)0~zN=3-)FWg@x8Wo2ekVqnJRd<KTMAAa1# zE&~xA?0Mkt^EclxVieg!gW3cC{{Mga_wPS$WCx?O2ek*je*g0d-NESmLG6Jz?|*zj zcQ87CP<!C<i_gE&9gNPWYHM`Gt~<Pj>Y@kHEzwsKW>%EqwLuq$@%Nv8dho-SUl@I4 z;E04AObsrYsvbCU{)HhBW7rkqqI4`XL>ogKCNOi|b@kWpze~XQq|k#p2@&IwQ4bIk zO0-ln8UwTpU1H20jR9gpiI!?cV}O>SON`m0F+fZx(NfK54A3%ki7|WV#{g*I1Tj7x zjA}q`2Q4+&F&G_3jGI7iX96u*0V-ZMlwtzv)^#Aa0{}TdwN30}{fz(s002ovPDHLk FV1i?nU|#?L literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_github.png b/android/app/src/main/res/drawable-xhdpi/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..f92f531e6b979ff870d33465abaa97acc7c293d8 GIT binary patch literal 1997 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_gitlab.png b/android/app/src/main/res/drawable-xhdpi/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..92a633c84a06fdb464fba9556c5dbf80f6756941 GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_google.png b/android/app/src/main/res/drawable-xhdpi/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb517cff101586324d6b49b327ef27dac2a5399 GIT binary patch literal 1852 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_linkedin.png b/android/app/src/main/res/drawable-xhdpi/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..e96d63deff697b699d38e9422be506d820e56ab5 GIT binary patch literal 998 zcmV<C0~!2@P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O% z3;baP000A>Nkl<ZXa((BT}YEr7=FHQuKANcZI<{4l9_3xm<8F7lwCy5K<FZfvYWCS zLA0B?sa-@AlmuM`U1ZP?L=gTET@+S^ps6I{MP-T_PSa)SoSV&cj_H`&cg|#eoUPb< zv7No|d*1hX&hK~5J_%H6@0S9u%Wxr|{L(GzLifWC2_GP7Ot^XSxrEyKG6K9Ybn$YK zY2-4Qm`xm)&^9?;CYiK;UTCA_p>yTa9?<e!LfodM1paA>SPlB@^>N5cS%;CSS#*s| z!tPvHO*J7tTmpt@9qt}4LizS|H<&?-6%`L!@pfR`tqW#>JA~>_>|Ft#0?p9Jpz%xz z(i5VCiQAo<NuV%I4`Xhs+tITSAEib0{v1zL(8^2#1*v*2r~*PT6og5@JUz$7XZ~s9 z+C>?e1m2NJYOy+)I2!v#m^P6HCV}rZ2P&Vm!STy?$$Zo`h{xT7B5^WvNvNrJF|EXq zmz;pw1G&gg(UX0^il;q8xYyCot0L6qmw-?-0VHD%p#Wk9r3!Z^mN<}<#vRMw+n4U} z#hDwBX^2HqY!oJ~c9^Gac+)?IFP0fjR$mjBz|f^*NMr1{#kXIqc$_fiq@w9;iEjp? zx%RRb7n{407^B0LBL%3~xe-xoG>X2R!xq#$>sS$6(Q!#BYzS>libqF{5$E<~F~L(z zh3R^{t~!jWec3$RZkrGSaXKv;$nz6@j#`aKWGvn)--UyllKi?0Ay8Sg85<32{etmy z(8v<5mhSLWDVBv0h|sX6w<0FDa(71J;y&b7C=`Sc@XSkBoR-gHc=gGQi5a`6NwIt= zD_K#$tmLjj%T8*2*R}NFLQ@y!7yc})I*p9$M+;G1yoH%!8+j7oiLf4c*g1gn4V`ZA z6cjz0(j~KZbc%`5K$c#f2qSQ(?V}<N+851zUlnasNjE*72q9o|IMK>EL%$!MU}8*+ ziDcTSK?s2fGI5uNy&{;&S@vX(i{xKh2_f)fj(sqqjOONj&m7B4WxA_zL<j*VulWhM z1()~Z9tW|PNeBV2oT~l|6Hv7|0|*xGfdCp!)hgj0P_;P&2o~;v02)ozD%|tH7`fo3 zM>{2Pc>PObCs&Z8j0@jyR{ljXjm4@v?&p#@d^4xiJ0f-e#U!2=*<z~Zk|c*rUYzJr zHK@p7F7(hLWD=QE)m$2hyem<6x(SkGBt6kig0s(ds%HMHVDxpHcF3Ai+&I<z8zm6x U2IFq(i~s-t07*qoM6N<$f=ZasIRF3v literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_meteor.png b/android/app/src/main/res/drawable-xhdpi/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..25b8bc182c32942950b086abfd5c4c576182623b GIT binary patch literal 3082 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 YKe@!fMV@q{xc~qF07*qoM6N<$f+7~Z`~Uy| literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/icon_twitter.png b/android/app/src/main/res/drawable-xhdpi/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8cf4796a99419568720aa3b374a38828f20923 GIT binary patch literal 1591 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/key.png b/android/app/src/main/res/drawable-xhdpi/key.png new file mode 100644 index 0000000000000000000000000000000000000000..face74d6aea421bf24e2ac468f3c9d877c8fa7d7 GIT binary patch literal 1760 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 CtyiT0 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/lock.png b/android/app/src/main/res/drawable-xhdpi/lock.png index 7522c451590b5be90c8eeb8a6345b811bd68eb11..ba072523b8a1ac9e37756089251c03f6566e8050 100644 GIT binary patch delta 652 zcmV;70(1S71(F3JiBL{Q4GJ0x0000DNk~Le0000e0000e2nGNE0F3^)ZIK}pe@RJ1 zK~z`??N-f796=DSYG*eJ?hA-WAeVse5fC9F!l<zRB;*nja>xsWynv^O7g3`N{(y)= zE_siDmp}-?7cdaByLP2(b=aPoneAy;%pQ6!(^Xyd)i+;PcMn1zPor@>-q!6IjWmq} zPY7|0;gINp5WXwIFOiB)>-D)`e|If|cS+peKOOtqzWPW2FNkQU7X~6;n<CqfqTvsV zi!&F!V)N#_3GVD2J=a7H0IKBy7W?p0A=X!y;<MtI?2O8~iak5Khwn7$6Mu4yNj1)8 zjN%H}nbHd0D97X=^-%`koAGQ`Kz*%N;U|}9HesR#`Wa|=W!hj;l+_B=e{5MLOA+Lr z`_sBQx0N%!)ifL9{mN3jVa8gJ=$NKI)#tsV*Ji`4nQ^rngO?+f;iqMKGNncrAU)y@ zA;}Tp)avs5dJ#EB;5m-rSpJ|cD%EZ<yPl$vQ$apTTGakw?^Xr)mJ1hw=J`$Uz0p9Q zk~u^8x`NST*Ae7Ykk2`re;oH5FKbe$?7Pzn+^@F}V={JP7rmVX`4CPen+?%xSyQo= z(aABnmJ2f2_T=r@Nsw;{JCAp(ZTpO6uEfs6auQ6guOvA+N)p@WEpsJy9+s0J5RKZ2 zaUB1)ZJ%)_S77I1xe4ZFJ)kcT>{sl}LA|wmV6M;q_q<$QNO1~FV%+aq47`Go>kDO1 zxZ-{1T|GbW3I>9{OD^Msf>IG*J1FR@n2Zk!N=1C_prEf}GCn9M74fx$g1(B$c<2A1 m>wirG-nSi=xL-vFUcrB3FTq)A0?;b}0000<MNUMnLSTZ9W--SA delta 653 zcmV;80&@M51(O9KiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPGe@aP2 zK~z`??N+~Q6j2bKd3ymt5Gx~E1RE8>N{e*iu&}ZT@nU{0cLri1g0@$y*eQsGLcHU0 ziRK7Nkv|}$5G+g;5UuR;2ZRIy$$R6><_33<eVdIa*X$NMKi>Dvd^d0R?IE1vA|lgR zTDb?#jUv%7Azl(X`#bD^1!Gogf0JYDi0JZ`#k|1QQfI_kddnhiW^uUrb`ao`aI&(Q zh10cM0-CMm#}45Q5S5geX%UYM!P9Cu{w@>8izf<bE_|MH1np!Y+~m1`LI{3Jp1@uM z!U^_9;y8maU7dNb7|-?knF3m^&J_#pI{};#A|mYa?OAPl{9|t+i5u<Ze}_D!*F<nm zVlI9VfVmNdm0uF4T_!E5Id1-3n{(r%pj5i!Yc3pF6O3Rb7OvC~-*<ThG}hM6bAkIx z<Z-?VC&s>M?6ZOqtgcH9sikqR^$MW<!@CR~hzN*#bos)IUa~Kau*~VM4|Hp#!o33c z-M*>}B=}M*mk%^P$qH6De~OFO(wtha00vxC5FzZSpVuZh2!lSJR{%l$ou@-z0e}7v zhYzpgtxN%X1*BmAODb^=@Hu}S$(@x>j$9oajCQ+jm>`%xjRI%wEaS@&$H1yV^HO|5 zv(Mj)A5orf$)nZUwj;Wwi!oc~g2%;T$=ojg5C<;$F^IIqyxYp{WBV5LT|jaRbS`Xp z&mL80Dj#C0zjm7oojHD{-lrAl`veLB#RQ586cZ>W;QbcxKcb=LVkhm>oOYyV=E%{I n58xL-R3}SyAMs!1i)Y|B^0B~3jn@0000000NkvXXu0mjffx#*% diff --git a/android/app/src/main/res/drawable-xhdpi/mail.png b/android/app/src/main/res/drawable-xhdpi/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..2425cfa0f59c2d793060a6a1f5d1a92f1a62dc54 GIT binary patch literal 853 zcmV-b1FHOqP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP0009FNkl<ZSPAWzO=uHA6oB9C77bc2(n~=x)SDHOv`uQ2{Io(nlzQ>xL2rVB zq9?Vd_NX2e6uc-39#u582Nl!gAZ?VS_2=xtQUz&M5UnKpe6zbVnV6qV(lk-nfo9*% z&b;~h&CG5#0B&&&xCZ`j15Cvq9E|N)%jd5Euowb%tJgL<X26yKFtJ(J&(F;zK8o=q zAcy;9<QD*8ySUhvBZC!>ruzh>CLm06?S|tp#9+;$Mb;qz`Lyz@yfB@OW#^Jl%##*< z_(S0_G$3vb$62f*4XSId)o>goJD-}inMhM%{YyY`@n1VS0!~d$X^1E{Q#1d8SS+S2 zvGSQ60Uu63zu*r=pZWL2yya8WUpqQFx-~EmxwiVlu-9DW9902*!Qoz#HwlO%m^0o4 zg3(j!wHXKwM?bIrTr>brQ{F@VVDv;~Jb<cz42%Pefjte_X`pevQJcb=fw>p73wjDr zMx+pzMpXf`>Dilf(-|Vjce1On8491Q)n<`3N@(U{u&RM}Jey7(lex<TRRMW>f=qXJ zb@l^eml$JtD+k#$;D(dU{_*iGzJc)75^Ib-?(jfw=GE-oGE7BPj)1)N%*@Q%LOMBN z+k7uGRIwQdMk4v;uZz_74E+^Zqg;nyr&9FnbuKjliZr&(zVbFBPXqf$b``8)f}Tse zMPKSuvo+a=0>}H1+L*`OCLJbd_uXd<ZzIAUvkk&Q<9F^Ye){%>&b?+G|KMv4wX>PD z^K{BSN>G<UrJq=vB{pf}cx5{V@mklK?DJPpw?VbPu<08LKVUhyC2ewRjGfEOC-123 z8;Kh>s1CO9GBr;-y^o+S(@uY+ZSw4G1{@z_T?SQ1+vY{Jt{HJt3^oI#QVtiel9^iT zU4ylns?<&zwBAdtX8Z-FQiqMISI1OYl-mp@Xz-&PfWKYQw-6q-tk9TBF<H!WX^_9s z({po0Y1N*P7)%y>bX`y^Eq(az-Pv<5kJwF$yQqGfxYmjzpH})#7We4-5%H@+E5>!l fa1FQyHrl`+9Hu5Q`st@600000NkvXXu0mjf%!rJX literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/mention.png b/android/app/src/main/res/drawable-xhdpi/mention.png index 1f51d42fe621cdea96e25619ab0e42dc3c3ee044..3d64c50264d0f09b2b73cba74af310651b87e3d6 100644 GIT binary patch literal 1580 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 literal 1462 zcmV;n1xfmeP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004XF*Lt006O% z3;baP000GTNkl<ZSP8XPYiL|W6rMA?x5>7tRRl{S^${sbeW1|d4}U3AMAU6!x-rS- zu@RMmf(T+-sT5zSh#<5-Qi|O+?<}!tsQ9R&{uKj?)}lzDq9phNC9P@PduKe~+?|`* z?QTr^xUf6tp7WhKXJ*bhb1sP$K8J_LZxumshZa<;wXTCY5zUa$vmzGzrmMB-yOm5y z%K>MH$8QmV|Af#YsfD;{DIK10T9B9&vG~DEYt#2jVIf=6fq{W{Yx5$%hXg&&tBn;+ zMs$X>o&ir2)d{U@TsiMbpoM<N6W*To_D5%3nM+r6AlpCoFt2uqr(bIn*dUL`VnmZ_ zjrU2Wq2VugqU^-PmGW%<{y^&_^S3QJM00GUEz{9_+{IhEtOMDBu@`v7uQN#UFE2?P zSY0JwPNh=6Tg9cu{{ExaDEfD|(&8z`dHhqnBfB!~&2N<Io##MyFxR7%>IIO6KT9v3 z>}+ZJs#I|~??*<)?^1bxl6P{0nNP}{nRIHet6Stixb6BF1F-U`>UiRz*4E^&uEI*` z;o-^k=luEiSZ_1`6vxvx_c$U4Ou%XX2b?)pUKLMlxme@YSvaxa&wm;21kHIAzu5+6 z+=3A8Oe5g(*!I?z$}7(fjc*j%e?Tj`-slsZCMiG4v^D*R_rby3CSQmqsp5Sd9gV+X zA$%OkAn$*H1r}@}KEgB%^E^0-RO5i#-_`!uGZ2<O#&8h4&FS@EsSNMDz3+1|dR8cZ zzt&=_l+@dmZr)|FhX+RYabP};6lL6Ps1rDAfg)q_oKp?aZWY||$k5omS_Qm~i^h4P zS^O*xGGMr1-2k4_`f4k~DD|pWxNM#=wour>!yhV~89C3(r5aWqC^5mgy$;@UjO<N# ziEBBn>hJ>%o>>`V_^iuTOB@H=L6Ao_<EZV*_l*LIj1iXp@wT&uF|IXj?e1v))P=OP zBvBD}9_r71Oe9X26}kY2h7B%OX*dbn5*Le=qrzF*j#z!P?OMOt-H|FXZgCimj4_tS zF>!^Z?O0@kZA;v0M#yJVT3!vGqunZ3dx?FPt~9zBCA29(F4oux%Q~Mt)k@y3@JcOQ zEG`(dO*I5tVXI3aMehYn-Y~UE>moT`qDzczhe3EA<T5je=8Of>YbCF2@k%XYm!$p) zY~HEbk&#KWTV-GotAN1;gu)OSiliaIHDa9+lemiO4tFwm_&&##YH0V5;vd@AbNTtQ z1<J}Xx){>(4_D^U>p^QJu9Ik^tN{19rR|9FYAPHUM9*`o-DhQ`qmeNt;*+|4YHBLn zjRF&Q4yWpByt0Eii5`xN$TS#*W&&jKgYruBH}acEpUC!)_PWOb8a&8C44pL-Xi@*| zsp-C4E|<VNjQb)#1`L~D5UaeSY+H!z!020iF3+J%)>Kh_xoU_~Y^x!3@E|iVB0eyh zhaHVc(VzmogNw~}@EAAGs9%_>4~-jM4;qv(3%G$~P=Gl2XF<Ib&Q$#0+1C6S$=H_Y zI9LqBu5rkK0d`Hb?B@4_n1wM3Uf{;iI4!WPp00Gt6fCm?038|_J;0UWNhb3#FMjt@ zT~O(DY%+y|)n3P#&pz3q+@0K>-lK%LksUfIJn!>NOT%d^j~uw14T&{YZj1^MIu!P% zjX`{6iw$U_(8-ijx|F=g0ZfWsjXRqc3kEi$jY4C2DGip+6&-;qD0IfJF%J%|xGi_* z`aim?15moq4-=)-Bb;}eB+1>K>Fpm}umeyufhm^pX=bkU!WUG*B1e25AL)*Za=<FD z_~TU2aarTN+S%Cnr=6qHSn&udDU^PmbNMB1EYO_JaMAxdolc#qq+5>vA6J2eG%)Sf Q0000007*qoM6N<$g1Pg{Q~&?~ diff --git a/android/app/src/main/res/drawable-xhdpi/more.png b/android/app/src/main/res/drawable-xhdpi/more.png new file mode 100644 index 0000000000000000000000000000000000000000..4d8111d8a2894859c9644e99e3db3e51c656b17e GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEEa{HEjtmSN`?>!lvI6-tJzX3_ zA~@epy~ugMfWswO{6)oGh25nq_%3p;abo@(?pUSn@oDno3h~K?5h@N$Dgj;&o34bG zny-C))!OyRxl4SncUZnYT{ZRn-GY82<6_I-Ym5)you+sx?(pL+dYux<9=F_mn&)yR z@OVBoo;+!t<P(1(rASG`V-s3Fd^WIR>``1<lNOXGP(MlI*r^V~HkDZn=O;68{+W4z Z`AyrC<8$@;o&p`o;OXk;vd$@?2>_yUSP}pL literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/options.png b/android/app/src/main/res/drawable-xhdpi/options.png new file mode 100644 index 0000000000000000000000000000000000000000..612d02be8da16f9579ca500f02a089ec769114ec GIT binary patch literal 1937 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 Xw<F~UF437I00000NkvXXu0mjf611Xt literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/subscription_hashtag.png b/android/app/src/main/res/drawable-xhdpi/subscription_hashtag.png deleted file mode 100644 index e4a79ec30862e61bffd04c8b43b212eb739fa84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl<6e(pbstU$h(r;B5V zg<x`m1M_FGwLka|WgL=-iFq}{AS6h`;0JGtirO9zPS#b`l81|8Hny)5m~ORdcfl2h tFALP?+W$CQV6uFI-0BxrZ1p<K3`;j@9JZ2ObO~rGgQu&X%Q~loCII}3E-nB7 diff --git a/android/app/src/main/res/drawable-xhdpi/subscription_lock.png b/android/app/src/main/res/drawable-xhdpi/subscription_lock.png deleted file mode 100644 index a87c44950d79d1256e345de6670dc92e5e517110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igbgP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0003NNkl<ZI1yuHzybdM|IfH!>8cbUoy@?%s0~r}|0*LR<J^SkusJ~bKQ^t5 z*aR0ZUMu;B;m;DFVNTfOfrjm4VPJ`gjSYT|F3*H60CE}JFh<5FOpJ_Ctc<KuAPizN z0L4HSLDgV52t#20l9j3d|NWl@(#XTks2>&<_72(7RjXDBefjzSBE$dxGK@@&X^Ao6 zvytVoxeyp;3=BYtGIYa0;vg}Q9Ec4GUl0ocFbsr605b#20faJC7D5gdSqOPd1ONZ$ z0ZC&EaF{l@98@h#97JOph%8G68y+e17OlXVu81`=DJ}wR7S&zIg6;yCP3Ypd_~<^P xx(i1Q#1-_!ix2)V#7Kwe>56#ILR3=S%K!@yVFnHbe-{7%002ovPDHLkV1mPziLL+u diff --git a/android/app/src/main/res/drawable-xhdpi/user.png b/android/app/src/main/res/drawable-xhdpi/user.png new file mode 100644 index 0000000000000000000000000000000000000000..933f3b71c748cbc5980d5749596aac8d18dd6a76 GIT binary patch literal 1391 zcmV-#1(5oQP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP000FhNkl<ZSPAV{TWl0n82<mWmsZ*$&<3eVxm8Sz)?L`$UZA@f6iXUKVoWva z3lSc@MIR)-=!=F2F9h@r0xw=-;{&2;QXvf6l2UdzT|!I@q*`dgMO!YW#kM<hj{lk6 z+1=UhEIV5gW73oCod5i{@0<V3{AU(maV%EgzpVh?5BR{29ZUGNJKH$JW|@z1G0GYr zJdrql{O&^YFNmO`DAl*`^1Xt?djO)=N(QHp!Dq{suzjkk&RA{buPP?!SCnNirT-)V zwv>V+fHP3*dM>G|w@dli*_fT7lwJsdVw!(vA&2lgA{>!FAlZzUK87#Fm^vqOMFjn= z$}SLMdj^P*@#7bseR@MOHt@RqNm=U1PW<FmY&T+zg|kaVcjXU7E>aaY7*L1@&c~u} z7lZW$!v{$JrnDjArDQDnXfeN1I>#0Cg|<F!lA|i!sjI5{$PS>cdg+JKN7`kKjJ5N% z(>o>zz+3Z@4G#|fd@FBl5i_=PIi)2wr!FBmCdfcMl*=c6&B-<rLe2-pN*ga*wPS*` zRZe@_auXf7m^I~cXU7B?;<a3Id?F_om*_Qq(zFP~tEOD;?3kbn*l9|hZXY0&z~-ln z<E<FrrViy1Y7;FPoA3gQ7V|5mb4)N6Q?FAqJ}HwDOOKY)j`Z~Ocnd+gySuA+N<T`E zgj?EVjEpVxyVu$=L7C9yg7>Mf=|*xP!WaLz{%Il5)xW0q(+wEMp!Ah7g+Ar1D{9m- zu|F7ohX{O;0pVW6wXs-qT&@G1+g58cvtuM0`59wxjhs7uP}-c1iYh2UlJSB4)PzrE z0NETshY8MSw9O<N<Y;S8R7y_ftC*lchGE>8>4HK$Y|5O8MpFi4BU!lu!FYh3#<jI| zFP#z7uK?#SXJZj*$J2wz^6Y|qe65kuYOMKoc)0Ix)2H0o(K8qfMmB0F-lgO(3IPw~ zfy}u*E?;6u{Y~mNwMQP)HIXDS`*zb-|3m8^+yXz3$D?IewJd`2q1R{UKB1QJDuGyH z=sBDq#qN=K^hdH~$Hrjfd8*=J0iq$RObgVn@f%l__k+aXi7N%Rc}ok}JS!;z9g!AI zgJ0-#B<~C+mWWAegojqHs6N`?-#=X}wyUeF=FgimyXcno(9QWRK8QEmZg?g!6un^4 z7c5E=^tUT(g{~)v$cjvyAZFhquzksxDz~ug;SVW(0emmr=t~r2;L=S_f{O){XVo#g zL?sFOf{{aXUhI~^>13{*$+M@<*d;4R?{D9_1$6xwRkS|skB864qkHUPZ3%`#%BmFb z@$6CMc6Tn6oJk_krgUn$J|Ne0<C+Iplie|B+Xqujw3y^5&*1$cCrKrS)j^q4$`V6j zNx9gt?SmA!-VC5JH~Lz`Z@ADs)V#XkLT_&`9URVw{HPecGSQ+7tphnUn!Pd~t1zoA zK}xVHn*g90I2_bLgG*yKG+!t(PR;l-C7Yl<x=8?2G!tn|r2&M8N<+sp*3v9rum<Wa zYbdr!R!sVsxuwhmS~`T(nZuT#mwCRN<Ei!ZzP(0CU1mTAU>yOhGj!Ckb8|kdv3+Kk zTv$j+1Kog5%C9}>{wn8am26)U(=8AVH}YB7$ptD@wIETDTYt|uGrnM!|Di|el3*xQ zRt3ir0|R+q=mp-D0Lc&0$;r7jDZ!gK==DT(IRmVbTS{f}q#<alY0Ei?X{yjI2ChjD xvhn(Q@8!O}KF9w{=F?u(ELLE#0{@>1{0nha;h>3dI*I@Q002ovPDHLkV1fzbmfipW literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/eye.png b/android/app/src/main/res/drawable-xxhdpi/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d2a62d5e9aa2d8402d5df0e16b706a9626a554 GIT binary patch literal 2067 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/eye_slash.png b/android/app/src/main/res/drawable-xxhdpi/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3b415986d384a0d46948b40104e6ea54440d6f GIT binary patch literal 2886 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/hashtag.png b/android/app/src/main/res/drawable-xxhdpi/hashtag.png index 8017c826304b7c6fdc8f5b684dbc397f44b40c3d..e083190f9348dac1cfa45ea8a8cf09829911ac9c 100644 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8Ea{HEjtmSN`?>!lvI6<9JY5_^ zGFacvG~{bG5MX({XOfny+%%=oI!`+W*5hKuyB2OKIbD_BI$^Jz`26$Vx6AkLiN9?X z<-d06z282PuNFOS+dW~`uPFtlJN1f%-Z`y$6@2LGlU-*#cW|#<b-wglf0XEw^O2cW z3wQrhsWEr_^~d7Sbbrlr`(DkfaM*3T?oyt_ts^sZIgc-D;qsK=QcLqbv{7TBlTcez z=gmn4I$kR#v@A?W+NL7YEu^KAs4)Yov{(7fTg5G%hS86;-nJ#*ZRElbKsQXv{Rh8H XtDKW%@qH_xuNgdD{an^LB{Ts5&SHNQ delta 305 zcmV-10nYxj0=WVqiBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj!@fAC2} zK~!i3?U+Fdf*}-yebTkMMyrBWb*5TGREy{u-AluryEi-;OqhQqI*vHslV7w1eD~+) zRBE~O(ro#BJnXK0U$i~qpQDTZ%RFshHVF|Bfx!e+LW2PgPq+3H@m=b+)Vl9=+3b~) zefz$6JMM3{$GgTCo<CD(U^av0e+g{bt<q01e#m_9ril9+vcSl7m+ilN326gJi7+)H zz)TnM76BwBrbYyq=_1}DfTYCKhyXKP#9IWAl$aV3V5W<B>s<&*iK)>UV5W<BFHb=4 zLI`G0GxF}Vd<kg-UU{&`MSz{K=Pv?YLhSM73H$(EoNKC-q^lhO0000<2SrXqu0mjf Dash;u diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_facebook.png b/android/app/src/main/res/drawable-xxhdpi/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d01570fceaa77225b3fbde0d854f9019b9c3a7 GIT binary patch literal 1104 zcmV-W1h4yvP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000CBNkl<ZcmeI)O-K|`902h5W_5S{OxOG>Q&TGyw6yRLq4aU-AVCpy@FMg9 zcIXg<T_Wic-J(OM4&CY$RF|lOqL5G!9V*E*+!R|gm0ex;V|J$Zw1+G1n>SC9nRWgH z@@D`4|LpGn=bQbSVK5@gnH#Sv^$2>PW7L6ky^O{jyI}kq>u3Ob(XDq6JN=mAXc7H0 z0V!}SN~*>&o>x5Rh(c!$;G_`J^+IZ+tn5}P@(@CZ+9-~H%`ut@<n>rF%0mtz020gs z00JO^fFKPsNC1=}$fs30+nc$VpOYC1M^*3AvYMMnXqj7WAZ>ws`QF*i_R5it);+kQ zG`Gs-!o>t5_x~SriRwC9)HFS;CK8djsz)YgmgcYDA8cm@qA~4&%8Ih4d%Iglo9cXR zq`4D<20a)f55X&PxiXN)jZn?r{87O+>(Xfjbm4UEaL>iYCenfF8L+O~P25NupnE-S z1IL?7J2uhdmNrR?cd_nshlZ@cp|Z9IYC2Ff(slMAeZ8?{u|3e;E60|I40(CAX0bI; zOa1OI1^Moy*3hgzs;z;po^P195{Evvt%2$)c2!#qWZSp-%F^5kMZr}vK+%{w^6bs{ z%;2Z#eX|RZqDVZEy<vMztJx4U2-p^=vDOzL&)YQ6d?+@2>Gs<eRn_VZ`jt-Eb{8x0 zWkqGWx%2p=o8Wk4wlPy{U!cOQgqa3tjjHP3zmETHHCr!JXImihvxVtCmSgI+z1!Iq z2w~GcXeq2l%vZ}*+80Qs4~%q~a+%tl0VLD0WGw&*zyJt<1OkFI%pd^}K6UNow!H)J z9{XwE$@h6VZZ9uS<9XSc#pJtKg;5R5ks}v>LgDx?cH3xt^5R?Q_0U9zQB88rlJ8>W z#W~e31(zp3k*%zgBNxTwgC#xeBV073_X~@X3LLkKjrl`TXVN(iXd)0QO`0IWRi^<3 zBGH7@Nve(lipI3*l@sfP^JcBUQ9yIS<%PA@&8;~KXlf=b{jJ|oKx0!ui62o`XPBda ze)xk~=60;LDn|j0PX>K!t(#l3<dgK}zW$giLm4-EiZ{EOCmZ$`nmWye9OC)V`)Iht z=>BMKBCsfZ#KRIGe_&B~IA<;x^@|#2d2-5K{O43ic%Q6ZW^~jpCIiE20f<R(MgZc# zurL5I3C;*W92gb`ASS^X0f+;`!T`i1I3oaYU|1M{m;`48APx)*0}zwoi~z)eVPODb z5}Xl$I4~>>Kum%&0uTp=g#n03a7F;)z_2g?F$vBHKpYqr1|TNE85KmX*~Q60nAj-v zf@UC*T7cRp^lEP;Eqz)@>bu-QQF4(tYNOCg;VE8x7$f`~b~o}5rk4pM7W4{u)aD=c Wg6<w01+0Pq0000<MNUMnLSTY5m;Ort literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_github.png b/android/app/src/main/res/drawable-xxhdpi/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..de7533292c2213345b1a6ab7d20a8abdc948092f GIT binary patch literal 3032 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 a!2bc}gBuK{B8~b00000<MNUMnLSTaP;^VXc literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_gitlab.png b/android/app/src/main/res/drawable-xxhdpi/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8211a7d1d004ad0dfde526f15ed12ac9fd883e GIT binary patch literal 3435 zcmV-x4V3bUP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000dlNkl<ZcmeGkTWnRwac0lC_xk$!fgeBŘpzJ3A@38bVUi47rXLLMaw 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 N002ovPDHLkV1iwFs{{Z5 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_google.png b/android/app/src/main/res/drawable-xxhdpi/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..02342b216c6be2883c3db6ad4a0be67a9c96f21a GIT binary patch literal 2844 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_linkedin.png b/android/app/src/main/res/drawable-xxhdpi/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..674c9ef3ec2901ca29c4e01ee9687cdab9c996fa GIT binary patch literal 1492 zcmV;_1uOcAP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000GxNkl<ZcmeI4TTEO<7{~u-VY$-_G=*O15+M{tkXj3kreL%&jiyE)tTjk! z4J5_~4Qcej;ER~1De8j{Ce;UHP^68uR@6Q;L2E>4dWn}_L}`(W<zkgP?6S)qXLdbs zx;>Zgw8fm=ok`%#`Mz&H=KC>c&YYRaNKjI3V=l|q0dff>c|Bw}6jfAQCHNsrose(} zaWVDSUvY)UEd_$#+gJg=|2>vZ3fzld({MPd@mA$0681LbL-w76EGG&sDgu%;gIH-p zEQ3=g;HbbTS>9lLavkqyN)?&7h7gcZ>R_#hcg`Yd5|DDE>rJHz!AK}e0+10OrW1e` z6HuZv21)EEl2feJ;NoK(cy((bc5TW*c3N_vc<;y*8qZw88z+8-+vm6H($@A8YCn{z zHM~1>8Jc&Mp&)aqW|3cq#<8>UJN$HYL{lG*LUJF(AEzU`%XQ)K;PW$<;IlmsB00`- z!?Z0sGN9MD6(euu64OBLNKe7OM>m+-g^K|RP>dwuxf1$#a(77%oQ~jkaJYcbt0xK2 znx#odOODg?af5tGf)lQ^lpEyXC?ElH##nC+P6x@g?U|9H=pUVi+e?3a&$3s2@9326 zgQrxG1jsYz$FcLh6n_DmFE93EYSu@#x3eJ$5D%dC^D`Kko;8hSY{rY1j-EEP3l{@2 zpn-`QR5i6>!mZyjCOtmvX>LRR*mStWZ(2_>AnvJ!JvxOAU*Pzqt85x+!8gyJ=o~;% zLko`n(zl?9fSjdI4RyR3DG6-k9Q@?y93I2qgj=nSnEXwD6AVqd!G9t>S$f1G9fnqX z0+1FJmCVv3M*Y0<t2%Ji-wI@J)kgvA_ns(RhfV9!u_`qQ{Ih0c#)Bc&2M)7G{^H<h z;6-t}2CC#v`l)+dI9yd08n5R4vmbqrkI!{$>c;l%3<RaAR0$t@zZG9!`g2~gEq^s? z%kRP?>sQUoj525Y{z1bx7jWpuKa9*wb(UI?skcQi;4_#9cWg!#o58e_HfE)<$-OOj zx;Pupf7%gfT~^8~wzdY8o)nL-Y92zVYlTu@%hxB1vXHYP6%V{~9FsTk`D5Eon$I76 z@XY<U1V^D+w0aquD!2T%Q$vx`uC@jAV%eS8Ua*!H1;L8@db}WuV0pcXZ2?g`<LkpQ zzT>MgR+DW3Sq+3@U*bx~eQVPxrt>yY1&BwzHIFt-Pzc%jEv8hGU#Dm1aPsmH`q)gR zmrdYhvpMhboD8JITMOagyiDwGJ+F3cn78KL(ADB7{cNU}uh_o%?FCG*`6hK*o*0J% z+c%<mbFNx!n7?<8wMWeMfL=J#frIV8YX&_sGmDzT?SYZ`j$)UlO{kEs&ZMw~P3oA) z)_u^)t|47G>cC%VIm`B-swKvG*Ye<=0%NP7*4BXDZR@1OfF8Da;&k6Nk}Wq{nVLYh zwKbsDu0e7j9X)hFiB5XYVp~ANZ2IEbl!pwc`|k;|Z9*)4Pm^r{@ebHZqISC6XM8L@ zY`UeD+TI3R${L*d&$zvF>RZFS#5QA4lWhTwd%V;b0(KrB9gr2rwgn`s7v2aF8BOyN zitC!#7Laa@|7V2&WCC0O5`atyn5aby5`atyn5aby5`atyn5aby5`atyn5aby5`aty zn5aby5`atyn5abyG66)Mz3%Aw3l(hV7$yDCJ*;b1eW)EywkgUi4UAjcjLugzsP$_z zs9$Kk$XoD23r5Sm`M)w+Na(~V0O^2H!~&2)Lg&f=Nd~)`bxK8zSdtxVXXE9liPv(V zau<KZPFXG&Ed|(lW)5}?RXzA|R3e2E-~+LG2M$!Sli#Eoc4KX17V0jt?t_QCy<PR& u!Xov{%{lOSUxVc5M|S0jV*-Q61pW&ENM%?(hkD=u0000<MNUMnLSTZb$HLD5 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_meteor.png b/android/app/src/main/res/drawable-xxhdpi/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a0a84577ba93b6b7c313fcb6403b263125649c GIT binary patch literal 4963 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_twitter.png b/android/app/src/main/res/drawable-xxhdpi/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..3faaeac18a0f4e1b157adb8b2c5017a9dbf76854 GIT binary patch literal 2517 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/key.png b/android/app/src/main/res/drawable-xxhdpi/key.png new file mode 100644 index 0000000000000000000000000000000000000000..112061298f044920f570be8cce23b1e57cd01bd8 GIT binary patch literal 2582 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/lock.png b/android/app/src/main/res/drawable-xxhdpi/lock.png index 72797f8812e7631f573c073982f7a8ef046cd5c5..7b310acceccf810a9e7ca256dfed91acd008c1a4 100644 GIT binary patch delta 946 zcmV;j15Nz82ek(wiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5Ha*-hue{4xa zK~!i3?O4xi6G0T7Hwi{*DvGzDUOf3Pw0i78S`6{93JGewOBKOu@hTMjaW~bbpnEVx zEIst7_FoVLFCw{#Vp}yO+40Rbh5VSe+1bsoB$+_z?!1}rec$_LcU}U_@MmM={ppt2 zUu+Au08E@`g5?B2PNoGR8Vp!Ne=zu#0=AuonayHx>8D9bU<&+Y)h)C=aTf($W<sPx z<pF46K|Z87Jik?PYN6I>P8zx3wd$LBA;e=L*qkPpp6LK=2LK-4E?xiB6Nq^;GQqCv zruLiODhgeW$*E^K3V%A2;SU_gY4-#o-i$<WrB*w|_6}Thb|E5<z-8$4e>Te=bIOIn zufT~Rg0Tflv0}HmgSjq-$QNhIXPC{*#T6Y(@ZmNVTSJ`%_>Nn%&Kcii>D1Q~yw#A( z|9a^hYqc+U%v;1qA&)P&vq2S+PS0fEN}TN-?(Ipi=sdIZHpU|dm#$<pP$5Wu!MOa} z!s0FOHANY(AIYN&{||g*e_{8VVig1T27)06B0DVK#-1lWl6e5$ojG~Dl+WjP$vKKZ zy<VUF@%vvD-M*>_`$L?=rKoT3$PUY+ha$u{JS!KS`?v)?at;xY1w!n?+PeEhFg(W< zpHA+1MQG?yB!>^13h%8F9i1(goI(__-FPU9SE_D}ayrHNwJ6OAfA3Bb_S)~DRFm<U zmD@P3SP3mLB$jMFRjEi0s>xkr+Ja?o?6-?uAYGR$y3cIa+JVas*2+LY4q(gbb5REA zL2bbY?9Y<2H^!qUo8c8YRkVnYiP!_Hu|M~@3<QD)v<0)ar#yz_IZGTp!3>5(C8oqy zP9wM|=XM751p_;$e**NI3RPePV<a}gB`Br7V4^9I9aK=FSTPEl;u4TdTkz4B_kPTy zcCmka6!#Q1#U&`GwqSf=WmSOqtnI1BM=?fX6I_CF>I)7+8-th?JO(DkqG%nCRlYG; zOnzH>@#?i01O6n%J2!7Awb?CAmTW=-*5L^;l9VxZ4r~92e@DIj$dVck=$<B1=dcxQ zcn2m9ZyiqD0>cEX!-fl-IJ|W@aSIF+unrq8aN_XR;lwR4Ou#y9xWI|STZa?3z%T*p zu;BtH4sRV!+ycV{tiy&2oH)Gp@6x)z11GMqkAU6MeFd4gTkG(|S=uLP>Ky(L^_B(j U*sgTm000002uVdwM6N<$f*y6X^#A|> delta 951 zcmV;o14#U}2f7C#iBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj!@e{o4f zK~!i3?O97t6HydCXIcm<Y_Pb%MA>1&Qr)<8<H}SCw$hYG(fC;S*eWE(MEwD}@DZhj zl42{-G_G*r(!}V-1&Qn+8Wy5%0L9YI@yuAlotfLtbjnDY%xrp|-+A48=e9-IriX}d zGV|i7s!|w$jsZa@A$Dr;NVEh9e@jfgQxwb(#?E{|MB0wfST6`Cu1rj2hg5)Dob*9Q zcnFIM!0n-Ubb<?ESNBg{1x!xQ94T!SQ{2iPHz{!Nxj<8Jc(A|kqZ@zC$8`azbhe)p zf5sEo<u<sU0OD^>;@t2+blMG$s{)c!*-NC-!>R!hSM{~eM*3bLYOQ9Ee+phs#G{X@ z*~oM?7cf4VJI=du7KnmYKwL(I2N(#v9FFzPiTYG#riV(UULv@{C3T28oklEjr6)!P zBX2FbDuS8{$YfrJ){DR9Ie~Tyrh@nPwzZ6f!{HT+P7vht`L-V`>vuq<tAe;p;?I`g z?(SIZ<aeu1E|GLmZm3EBf0Wk7_`{IAejFm4=kbqM_T18x3%th5@Dra}PqpKBOH1wL z7}vLC)hWTbx?ytqRTmTs^Bk~QwB!Ot69dtEqRc6sOlNO0-d)k2@d^-Z?oRZdUJ&J# zXg-deJ+x7Xo0I1=?7iFMwWzu;V~81OF|=5stQzgO0N$LZ%s>GJe{Yy&wem6yS*%L9 zj+Rg^m+M$vSHBrR5Wgnkkpuc3FeqwcxZ{{g=e`ioe$lhFMcEgLM3zOFjCM4EwSwAZ zcIKPRn|hPiFv}RTW_(#pvyH|(Du6JcU&;&s2nz<j9!7#CjVX!Yr~pt)k{1uyj#m;- zE<y>GET+WUQ2`1le-=BW`fib8E;1}xOwnhPwj{QxXp~RCfSsO{<vozh%p8JJY08)w zhKN-2x2*ynfg46UcO1V9n%L8HMNt;{(rCQY1p@IztnafJ#d4WLQunAtheaa>GP3`; zX3Nz=X5~^=ZkVBI3g>2q^Y?(cBmbLk_z76{fV6`MPeumLe_oX8JQ9wlpFifUcfk(6 z;V0l1U^il~_5K9B?yw!cKLNWAd9C*+;B|-X@cjwcb;xVIKLM{hY=`epz^+4H>-`CM z-C;ZYhM$15uap42{CAM)rxv^3)TihF3k*N0R6=uB06~ZWLzO^wQr_@O$S+_gmyZ_v ZFaLxDW)Ts;4fOy3002ovPDHLkV1jeX$9Vt% diff --git a/android/app/src/main/res/drawable-xxhdpi/mail.png b/android/app/src/main/res/drawable-xxhdpi/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9ad1b695e4af6b11f74b462f11c1ffa5d8b326 GIT binary patch literal 1199 zcmV;g1W@~lP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004XF*Lt006O% z3;baP000DLNkl<ZXa((>%Wo4`6o=297|{g+(G4J4sR)`4NOm4}3e=8eMU;oyiY<gi zfMpk`mD(<|>`USgfTU5Wy2*xz1d%`?II5tr!A8OYB(}hoNFdTMGpFZFJ>xqs*%Ln$ zn>(Aib6@BD&Nuh^Ue5(kmx_RjfQo>MfQo>MfQmqeA|Qh7AfgyZWzQm-X8^=r0NfN* zZ~f(o*W_zO2yLpgv~W=ffnFbdf``)S9r}v+6A*LW%3bv=#C+@n9KXM~_)_*;lOLFD zPl#nv1dO$?CRw9PFu%rKPgYh(qAg8QUQ9}pRvxpi3uzqu1p=PAa@Xqv!X6@eg4}bc zRyAF)U3LksPEd9ku-I}TKkj67K_ZdN5I8(pbCoCE+U0tseY0`5kge%qww|}q{R`s} zEVt~<v=ZE#Tx+V<L^v^=J~uQrwx!lh=Tig2qo;-r<aS5399eKYIXXe>we!aEYK4p* ziE6Of`n(d1Co@+~F#j;#>C@hYMZNwb36Ag2?G%XTxl=N<lZ;+ZB-7KKq8(3W$MqGc zknu08K4b<*vftDbDVIkQEOh+>0=iyhM3~T*S0A;LHdCeF*DHX=B|z9J3qaHSDaxze zu;A*eGf%6L71^MbM*N6r$5WZ9R@1hrlKroIcC8GtV2ZxC!Das3h6VFhi&kB~ZNR<+ ziN5FWigHXm&9n!T*~5Y55i*m>?DjCK+>HS7N(h)J7xTwTf8Tu3Xx9x3wmU2qZ$CYL zEO(F=tKWywHqf}y3~ds6autk97*!H`9XG`Gl?#hAwqK3jBMat^CnqP(a&ht3SWFve zC2gB338noweCQQHLYF~kr<v-*yYtVz<&8YANwD4V{kscK`ajwBd0pDWnTsPMM>gB- zg6?&x3UPy|?tNIe^LtSHM)R5y%tmHsXAOroz(2u;@yv?(rZSjHf8i~+s19c?*QHv> zA6+X|*=Ey%?anOPyS5(`n)XBJ*fwD<F41<V0)B1xBj0JFYzbAlPtSf>E{dLJ+SKZo zq5avb`a5HW(j)#}EZT=i>?5KYxKiV>O2g#aQXxO>Z{J)_%LvPExM+j;S1z;Ch#!ZE zrQe&mjeXj_QnB@7*>+0_%ff8hgP&!t89MMp6F|GxqMcN0Rsh;UST^wBUjA{vJ+^~r zbLBQumHlZOVcCdG+tkGjt;bXU>!h)&!FQ#l{FGe3o$0m{mYrwXpYGar05tI<&E(gt zvD!hg>`O-o%c85af0pw)neHgzP6`XNr38mXrdRS6;a(vbrb7`9i%hTNzwd<kjD&R2 z_g3ktJCZ)1-I_crEv%3#XIDd8xD&K*4fq7PPPNxQh)WJynw)2sU_SjqU(6lBREs_| z(8p!pSs17Nx=*ks*-7VU0B4dokw}f+qC`%v)U|0k$x~jsGsgd^+ZtSx78meQAKJ;x z+ZDR@UOl!Xi)Ae?!nQaj-Kz)FY>n!!BA_CmBA_CmBA_CmBGC2-{09U9%*}$VMQZ>6 N002ovPDHLkV1g8vNiF~Y literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/mention.png b/android/app/src/main/res/drawable-xxhdpi/mention.png index 29defc2cd2336da6addb8683f0b618c7abb8153b..3947ed674c8acd27b3ba7bca56f1fd14fe5d4b94 100644 GIT binary patch literal 2410 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 literal 2249 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 XnnTY4yCtGD00000NkvXXu0mjfpFCp{ diff --git a/android/app/src/main/res/drawable-xxhdpi/more.png b/android/app/src/main/res/drawable-xxhdpi/more.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7cdb0b6a56bec7b0a9c3a52eef8ef4bbb8d588 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8Ea{HEjtmSN`?>!lvNA9*a(TKq zhGek5ou13pY{1j@mT!CZnbmK({@r=Hi$!Kho#Ldl#A+_r=-f-+SE{5*WC%1cuqZGv zayT$B2^1&>#H^WP5|kZU&;Rm!<w@^#=YzcF9^YRaxbc$u%hSt>7d~)a(Y2y*<&~b} z6MQ=+M^91y`1xng_82+a+g1NR#VmPndiIwX3C#%RD{<CU+qSEH-@~T%GM+zb;l)7L z(;NS|N1ginccV4ft`m+8Hg{gjZ2FV=_0slD+D)4LyrQR^nGb)R_UVG?a>Hq=855_S zSy;dgaT$l2gWNk-o73~d^lP<uPifZ`I(2wj`~8kj7y47PHN7t=>27^~h=U2qGwGar Z7>(|mp4#v4yB`=z44$rjF6*2UngC`lhnWBX literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/options.png b/android/app/src/main/res/drawable-xxhdpi/options.png new file mode 100644 index 0000000000000000000000000000000000000000..2622837a86f7a4877d7d05d771c9c7d95d6fdee5 GIT binary patch literal 3262 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/subscription_hashtag.png b/android/app/src/main/res/drawable-xxhdpi/subscription_hashtag.png deleted file mode 100644 index 5d4be58c77410b6365b723793fc451c99e4e7436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3Ea{HEjtmSN`?>!lvI6-<o-U3d z9=ypZ2N<8}Mtzi5n<^rHkRw^xS$OgEPKoA>g=trkqFS`VjM;ToNKOn^2wQ&9qu@Y| zO@i2C9f=8x6SgocbgPoyU?I14hSWv(DUypFeM1ZaoiCo?eswWxqSVVa4P&>}u8W#F irMleW?BopOnHkPZlw(_%;rbtFJA<dIpUXO@geCwJ+B<Im diff --git a/android/app/src/main/res/drawable-xxhdpi/subscription_lock.png b/android/app/src/main/res/drawable-xxhdpi/subscription_lock.png deleted file mode 100644 index 68537368fa690630a82aa4bfe49f861043862d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmV<A0UQ2_P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004XF*Lt006O% z3;baP0004-Nkl<ZNDb{&J5K^Z5T3cCpuob?So<Grd_?JO<TMe9koc=mFo+3?4LzEu z6+ghr+F07y-i<r=%CX+u;f7=zE+MzG`#qTNb{F9v&&_arNI`Hy2)l~58B;%z;1wO` z{-W7<T2u}f0ru}6x5)Rq0JK+(#}{<n%l6svM==hd)VO~;-U09@M6g~a#_Ndi4d5QN z&l_(=c&BKQJI$IRqDmRN6{u|2s?Hk!c+7LW##+%I^d}KlR<FoQN+gUo>Qo7T5n;2_ z@}4!$Ox3gA;9;b?9TL$-XdZF*HEddnQS(L$0)NU#?nar`b4*hq9w_qz1)VaOYsYcx z(uNbG=H1KW@FBP=Gi6+eQP_y263c2Nlkr<Nj*d(SbHTmVcw(8w#>XxfD;g_wa!#RI z4c>FvIg=VT)zG1`F;Oi6d!F}`jLY70*o=nGlZ|!cl51<mbH}MS7=@R>lABBAI<3>x z&sxXUjKwQ68%vs%!9e<a);eAp8+=7G$|`EJ+zeQ&s0~6hqgabtysM=<)~vt3ENdNG aGyVm8o`8?rxrFin0000<MNUMnLSTaT0^TP8 diff --git a/android/app/src/main/res/drawable-xxhdpi/user.png b/android/app/src/main/res/drawable-xxhdpi/user.png new file mode 100644 index 0000000000000000000000000000000000000000..c8960e2bdf2c026c3ded38a592b1da4ff34c9b7a GIT binary patch literal 2118 zcmV-M2)Xx(P)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004XF*Lt006O% z3;baP000O5Nkl<ZXa((BYitx%6uxI>+ikH(7DdWKC_#)bgi_ktf^9|7RDuDd@dw%j z6*c}-BgROy8jZwg41bJ4#rTN+03Q)(wGh}A($W`OVxpiTv{EUc)RNNI?#%VOyRF<i z`<ixV8-MI1+db#p^ZL%-xz93|dQufgRUlP?R0aOO6`+YuE%(myY5KtB*&?oydDR); zp_&U5nZtwtUb?g-*I?{XlUN1ge7XXV=$yvcPMxtGt*!Mwr7a0eQUMng-8Xe0Fz_bl zd=qky7mE|o2br$S7aJRYxR?a2L6`B87<b&<;uUkbKd=vA7mURTK>tc<u9d!q107?r zv#XmFz=efnvxiLc2*A#=n~1Cj&|Pj#yQ8Vedq$Q!L2FJpk$qHDROo|-@nvMNbeuHW zLONR${D4MJKQ7w~TG$F7!k4uzQQmQf?yPCgAYt*&{`cS)Gc=;j3+7F)Jg~2(uDh%A zMCj9TsAO5e`#rsvFEOIKVIcnib9yfI_jY%6H2&wv0m9KPT~t(&*&jG}Dtsi?A34_I z{XAB_i}K4JX59Ep(ZL8l$u)gmW8=;NMV<g7S2O`PA=3e)dxI4$F{+LSR#*!ip{pc; zDJ<wy5hlhs3YeK}m7ET`kKe`gXJuI|TIdQJMaSY(X&VRQ7~ra^Dh)I33MB`kJ*}+= zPbjh&Oi&j#iVA!NeJjH8GmZh?yVrXi=j>`Z6%1AfW!?^rZta!zgiqmHmL)<v1~@>Z zE*X&(C$n>`$#Ko>u-ZiOZPl^MI|i7DXIg`DMq?gbv92Dp`ibP*s$-XT4zR9;?Rv;$ z)9fZPs%LV#c9b6d)=k&>Q999Y#{f@GH_wG7L;RL7SzH0#YE|)gv~b^6C7ZlsfW2OC zAEuO(a$IiGYMHk~bH)`L3}V04*4AFOV{1ppF~GrKM7!0XeBt7PvNftKI=85xbS)Mx zx5*kPz;`mADD5m@#&(7!WE$Iwi|>s)t>ovIWdrOstG%XayR5QAct-)Zx70Ua@u4gn zIAe4A{e$1;J@G_Zv_#9w$};@S*aN`VD>~>gzUDedHxG^i7Rl;5ZN}HIoH%w*MMnFH zH)NSi_w*TWVS$k+%dl-6O5^(Tsw{C1<Bao9Zb3<<Y4T5G&j{qF%&b|~Lp#xx{meXr zq9|Kc?3*{VH`jk5`*4DG{1+BU`I_rL#j^5kIYD&oG(Om0A<G0kOvZXESiBamB?GL8 zmlVLl@pYbzDs)R_I^o1E-BxH)uK0W9p}tA3?5$ULXQ`wC7IP<-gdK9aSb3>~5*n>C z*mOF%;g{nJI%$COR<E7}|LDoe<5IW~W0mm{+X$+Oi>$#C_82^#4Fom@x_h4l+-$`m zv9k&<7$K9&g3<a`<81G5iwjD&lgst7)5o=rjMC-h<?cWK8mJ&{Jcis$gD}F70h^|; zZEyB|D>sRi7&nb?WSK;BBv{8u|7hm5nLBH0YKEk?agoYYFjf!ZB;ucbv$F5<@Ym?Q z8)2V=PsAcZ_%0SEVJoTbuG7b7%$z#~c18GDAK@zpzSs5j4_9W-&gpq-)5agMZkPIm z)g(3_F}c_#q1MHPr7O9?-$619W9!opX>6;nsqR%wRS^@#v_$B_RX8zt0sh=^{QXEe zJ=fk;w=cF{<koQk&do1<+2m#wTt>A=!vz4`p}EuFYdgHZGje!Unz#I(Ip)yt(|C{Z zYVfdqv82s4(yDwdb+1V>TV&LPqggLrTJk!Qc_~sm00uAs?S<1F+LD`U+O}_3Paq>1 zMUaVgw|Vq<Il9B6DCsKnfQW-DwvKPKx7OqK!u~TRz)SK=))}0CWpxjrxDDl>>TY+H z-Cxt{BN`vNl=HuW&Quw;B7>1m^x)B!dW<3V9@~J$+-P+7{(_*hWY=PYuDRF)M~~G1 zEX$pym)ucuvl(FDp?BRN`$n<5^z11&w(Z{CFUzCRwih0O?n@7afhBfqQhLU+WP=sS zix?snA*KvQ<Ro&FWwB`6fEhD4SRE1Rk2f^bI(EQj^>5`xED_TxkCa=uPDo-4aPZ`x zQ=#I7*!R9>Z>u7k045j{v6WEB&F<}lEx^^)2j*f>%94W+*AB`2MAG50c~&UL_*q08 z?yY8q#yz+wQy((7V2UcnJ9Q9aWox>Y;cIHDxuhyN!xa{mUp;INVjF2J#T<PXwpc6V z^|y!;%#pEE@gmv+Y#Oe~j0F^52#lKsjyY1?7zWs&(Z^AMZp@pfaW-|DGi(Zoda$<Y z!Je!qc%wiXj(!Zx%``GUbDVSOX^flc_z#~96xD;pvj_GbOdm5~p95ey@GUkWS7sDA zw?3g9t<rGb7GPXs{xM8}^9Ua6^by$j4Cu^2n9#Zy)d=Q>-hqi4^$GqJgy2S=5!t9{ z<U9BUds`2&^CCw(y0+fomX`g$XK3lS6KNl!>S1?3b^;|u2f2uxL~bHSJ29?w6Fb__ zS-yOgr*EilJ-Xrj=zgX6u{<_SolzquUXwcPHLJ7SS-TD&-rF-4$72R;b)HweVt&9M z$iv`u3*NzbD8fAAd=737uR+&UMs}-hbe?c+!~e#As&xX~DU1Q9(7S(frMcSL8V;O{ zZWq5LVZgCMh)sa&*vY9#c8a0<-58A0a2lH~zJqo|ek{X>@tXK`BW(yp>kTZLe{sB< wj##;*+ENurRUlP?R0UEMNL3(JfeEj`zvl|qe4Q+8I{*Lx07*qoM6N<$g2YV=1ONa4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/eye.png b/android/app/src/main/res/drawable-xxxhdpi/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..a30e5d3a46fa4ec296c43e0da381b8fc9c149dca GIT binary patch literal 2802 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/eye_slash.png b/android/app/src/main/res/drawable-xxxhdpi/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7f41cc164474f07811f185d893cab2be8fc531 GIT binary patch literal 3859 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 VZGtKO#mWEx002ovPDHLkV1g!uevkkF literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/hashtag.png b/android/app/src/main/res/drawable-xxxhdpi/hashtag.png index 1a88b82f1baefb4e5c926cc4a6a283e90fd76296..c79e0c6bac1e26f7e55df53e0880bddf27870d52 100644 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)Ea{HEjtmSN`?>!lvNA9*>U+94 zhEy=Vy<^DN<iOzSI4w9Tu)=^_D^JtBA!*auXE!JLmsA+KElNIo{QaJP{>y*J&Hq?Z z^KIkJ^ZE1tGKJaKH&nDT^9ZmO#5FQ5VmPO5;2?6Kl9jE4$zuHhhCqhrq7n*R5B4w# z7VN2wZ+jkJ7uQ(PiLT!A{^r`>GB;}z_c*OSU(J6+TPC4Fqv10bVPlzH80Ul&R@~9> r*N=q}(`{h!|MxdAZ9Kq0oKfaSw##KLj9>g67?cd2u6{1-oD!M<o0)>U delta 382 zcmeyt)W)pX8Q|y6%O%Cdz`(%k>ERLtq#Zz*gAGWo$}GG$QBk<w*3-o?q=ND7EL))_ z1CbWR0*Pwd?p`suvrf|I7ww(SC|jjr_Ss17bvmd1`}FU|N|W~q+h6~kZ14ZMI5$%2 z(!(OFeb?T(#&)lpzep<El%HwKtC*1c0s>1@R#z%42z|cjS6hRIYV=uV#<f=BSIhU? zL}#D;b=Sss`&QFTiF2{v>nqpa?cOaGU4Q3S^5n}OrWsi7EV}mON;?0Ez+0KTEEYRw z8lS!|Y@oM(qsh~x`nD~%yi0Qa#^oyfntNyc>;Hel85l!Y?mkjHa5k`1jw3*{xVxRf z-2G~$f<x#TT{)&ZGNI2K8A1)WS8x;*hs<SX3ORZQS@H9l5QgW>cV>t^PZSnm-OSz2 zVC{Xh(L!E<>sq0mL+F}M6=nxd@oL?ZV-cCY;}erWz)r`bx0@Rt35CZoFlm{usHl!_ X;H|dkkN4sR1}TH5tDnm{r-UW|Kna{u diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_facebook.png b/android/app/src/main/res/drawable-xxxhdpi/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..d19bdb238ff714c9d87e03ca0d634f44f84f0cb5 GIT binary patch literal 1499 zcmb_cc{tPw0R7GEkReU$PL62Co%>q1F^-wsIbudLMaC5gJELXHPHC1Dp|)H@?lhK_ z3S~wJ%Q%wc94khMkQ`IY+JE=&{o}p&eeZkU`|Eu#&C}gkTvT2Z0042c3(EUI3I9Sw z_<(2clgtkULbP|Y2Y~uavG3=F06-`kjk5P4gH{T$VG6!-)P=q%-Tc$fnxgVHB_exG zOTvV(!v_JdNm(NdsoW81_m-ai@g|H{{o7ajwVo~X#+(CJN{rTa$iNsYT|GXYHJ%rG z`hDI+=w$pKaaIkV>hkL@?H7!t3>fYn%KoY08$)3GE!ili2PaW6U)e@#o$6{bc@+Ms zs$yNK-()H=leY@huLz*6<PwgDy4o61R(ISiwHsLCt;y@TQ~_d?T>8>gQWsQF|2#|I zkV4r3_cC{71cfsnka&i*x;>Gev=vQ{lxOZPLsj$^{K);zos{Y6h2gRrfTb2>P06IQ z`Vr?`WvOC<HjPts#AIZBz*h|fw=)2B&WDSg0Hs4UbUm;D)YH{2Hjy#Q_w}+F^l6b= zI)b8|60flgTpm_r?q>{CMlNQQmuCmubHVD|mH849$jB^@5Ck=k);%u>3p6}4!5Q&k zbLj6Mg5^@Sy8F3BDG`~w-L3cf`4(IdsNPW`g!h)t)zj5cw+P|KXo7Ck2Iw7Gg|R3P zpOw}+rQn3mrrFpO8pPJ(qsI-wN@9(8!RE_-zWg=u?vhuFjR?q#pJ&+}HSN~UkXIH8 z85;rCdNZF|_H1op^>?0FsZJIZ?OV^>%6Vz)Ym|g#5``32FR}O=o>ef?UIJq(2Yi@O zv^y8iN=`brtn_2Fu!ku5qK0v}T$Gt^^G3*a0pLI!`~3!TYQF6nqcaYCjvV@V011Y& z@g$7Dx#?h`=AL^(>r&Gxf}oa1uaQhx^h#WktzWIJI2J^N-QBO6@n<%rj`Vz13uX4E zOs@pu(89CZZ#V%rxulEIM2uzI*r?D|44YkANa|R~kvS19nMPULEw}Wq;4yGr&`ayB zenVQSYO4|3l|f|-%E__2F(4L>h_-h)Siu$*KgrWFdr-5uHm5w4&fM+SutpRkJk|FS zDNUxV8N2E^+*S5n1^AP9Pn{T>)pVEmPU<^NVnHQDuKCU{GbrJ~DC63>z+WpN-Bc1^ zCtq`s+0~<Bqz+1qm_6##g97Ig^rR3VAsI{{+zz^h^pfx-l$1IC*B*LgtvDqel~G_l zMQYK1dkfp<$J*??KV$|Qy}v%!@!I#D)AzOI$&_F`-uCI1?~eC~==*7$EO%<ir@kR) zLOzn;AzOg6xkALYce;_Zmh4)JRpksh$DjF|#xSdnLN#bA!v(i>%z8KD_*nq``rLQF zj>DLrISD60(I3OdF*-%#AJl}Pm+kd}*8}>SYL-Rd>{MXbwW&1&4aSKa-G+4r#SbJP zK)NE+c}C^R{c(R~AJlXtT~*`p4b`Aoz~}fTgX3{uvz`{xA?C&io}ll+o9*is^Db0} z3tzspq@hAbc`eKpuSWF`-isM}`HiZP^lvkW_Q46%bwQg~Ik(X~^UCQTxLA3k9HUt$ z(P~={Pb=`&B$lhutWrvrn-5R<x=tWF=i`?KF1HHC$|L<N7GU>?@HL$$VzdTi8XTl? z_HQ&AD3Hd$p>}Pe9vJY<V^38yAnHf<mH>#U5@@hz-K(5zz+5}mMS@C`F3N?l14>ZY zfYjr)GC0sLipYi(6H?U?pv!(5ci@1Kwv{H7`oC673n1=sd&S3IC^*VU){WgfMRk*A zxvXF$2xpK0%>PgLh?W|={eo;6<Gg&_9y>NRFe1j49U9#*+BKla(v&|5KOY=6pWfZB zTtBvOoA!DDh9_89!YLXV2Cw%YD)-GJgSvx_I1P#o0TX>IB*7soC%rp{;UJZRw+7IT K?x<QMf%Xqs-Mi`l literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_github.png b/android/app/src/main/res/drawable-xxxhdpi/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..619329670f318e08ce6bb01fe891880fb092ebe0 GIT binary patch literal 4082 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_gitlab.png b/android/app/src/main/res/drawable-xxxhdpi/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..01100b0fae1e368d28e4fb374eb891dc5a094dd4 GIT binary patch literal 4687 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 R`JVs)002ovPDHLkV1g=43(Noj literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_google.png b/android/app/src/main/res/drawable-xxxhdpi/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..7693fdfc31fc91ccb15ec5beab89b754dc95118f GIT binary patch literal 3764 zcmV;l4omTgP)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h00004XF*Lt006O% z3;baP000haNkl<ZcmeHQ3v^V)8UE+)CfQ8@$xEnFK+scL3RNL2XpSH(Ac*x?2%uEK zYPD2pj~;~@Je2wZ>ycJHJyu)Ws<ldjkMIzI5DGpB5Ag-4hz)4vk%S~bHqX6x`pv?I zC42Ag-MzEfu<Yf8J9p-vfByOYdHnaExwAycD~Ui7fg}P+1kP3jSXZw2vFk?Vv@|uk zAY(pp%Hxb@LEvmol*Ks9^4*EsiLnMEjz8AGIj>`keT}%i#Q9!Q*q1q1I6q+v|Ksh7 zb?s6LsCADRq>(xbz`6kBZ~!(y3TTWxsOV-Wag&WH8!`(fe83hi)THpX$RzFxXqcGa zyQz(4a85G;&>)NTF_oP$Isn3AX0yMVvu5*FQ<-8!6c+{X!ot+*+HY@QOuGg38jsd) zi&6c;vc+)qIalb(+;jTA%t}gH!)B07(5VXG3l}O!-d{aK)A&Oev-?S|izRmG6$b&v z)7eVqGi>czk0oXiWbQNtRE>2_B#kcu@Pi|euhU7z@WhxhFMDmpE9f1Vj$(VoTmjYN zTti6Hp2QeGGPYHb%$>0cW>fCUT~o0`GUwCSDW^S2e89NQYQ_$mM=Gy4<G>d<2rJC1 zR@Auje=CMgiO`(JDkeR^XW6vU%K+YeT4`tK1BRuIisHOEd+nxgWmiGE0;<LhpFo=W zB23C$*}}$^AERm;XV+)1-?~|*98$Yhl{^1IrmCwF4t#+)8k9;@jyY|*Oa(~m0afl{ zi!pA_lPO$R<b~l#vyuJMtg_9Y$&k-(m5G>atH-*Y0{C;R^6KjO(ONltOux!nCkK2{ zUrP!Q)<KQi^&I57y{m&~RX!j13Y(p~ZY%05@3Q0qxZBqFSDpmlk~X5AglpWx?gsd` zSt|Vu$Q-Md@2`4PlW?uuRiJXM9PjBVenyFSk2UxLvxpT?GigMg)}(%jalcomgU;9y z2waJBt2pd(cxtL32clRnG=_5#-wV@ZZ^Yrx+SM803kf5dgne%0y8X*K4}8`De^@z@ zvcYcS8+yL8<x?{bvib>E4Dfo@Yq+M3hk8asDH)NdqqD#lGNCN<7c8EKHLg8qK1Y<4 zj8#IgXOtB7LiXw{$D-uo%O)C4P5u7KFq0R+HF8NfUY!ZPkj1nD>fHtXTd8F?T2orM zN<^EEmz*!q!i%!6oLDM*$?)V_#7%f_fg<?DdNOu4_(BHL3aB2FzZ~Q2b$WtZje`(v z@WDTxos#tkTfMr)D!)+q(Iad}>h|4_H>yXVh;}nP9^eZ(O)22SVv4pZRK=oAL#zMD zrlj1Gwf2LZ(ej8UUyXaXTjT1h$eR-{@P*uA72q2~>-O(7>bB8T-k%4<&8i%w=d{jT z0`!+H?zQfMJ}R{=gL~lx*>AXk<%9}{RY3E<dd~5@)pwCvml}~J5vov;#)v(alhyYw zEQG_!7{3b*3+*8GOOHl145<JioLZi?hqthcJgYCD*4>##d?JcRg`dbR+d4O*ObJRH zQUTr#X_L6Bt?<{qWqS@auFoUVLT2-m>)#o@f$lyfo~=$_u=vD=_64chZvw?i8(Kr% zXM9CUx3<7&(_yG>N3OH?%}MZ2L1x&Ld0FZYy~KB&B0Ux29y>LZ_9O59Zl@x{giugD zbJ~BDvvTuyVMx!aWWyeSovemSZ!E)0-KXy*#|XG$OkOZIi<006gJq}ym?=LACJ%@~ zPUolt)NOJlF-K@a2H<bYF1S|eLPmfjXLL|^2;%QK`*@qZ`_0x&t4pJX*ZYxL?F`BS z@HJADVYzF!z=N8+IwGLk1GHu>BA0`b*+M;L?V;2`wH^7xaZ0O_;0MFvkI_{CR=Otn z2~6MZ@cB;qhSIOW-X$BnMkg<Yu|NC6$$KyYx<in+ETskzW(Sj-i}4;vC(m2`h_~1e z=d9fRy`<S`j9X9-;P0iMX9avwl>NL$3`t*7#<1#tCc!rb--lJlWN(`)W&1cwSIK$h zp_e-Hm;F5Y(S}pwoowck_`&b>@cQ`~3-s6p^#Dbcvwt6BTNQJ+?$#^xtczp3zfqlo z6o56<K}N(8#WS`sBKkxo=4^mb^@0?DwNuMG3PfS}j5MhLKk5<n0HSmJ`K;XW;oCkd z`4cHGHUpeH>mS^qSEt|}K&+=8VWe?3#b(}76e;sFkpA#N>aHhtkOCNSDLsI=R;^dy z*&4@Lv+jywkOBaZ90hdGO7?(&)~0ESuJ2w?0Rh>PL1_pu)pQRyDy7ilwPLSk@(P1M zP!GU{rTQ>=%q24=u|Co>S8HP`Zu96R1}OmkV<|mA)zoAU2tZs>G#sZBd<7{0E(9qG zz)qVBgNr+RV^UHa<`jTkVuxhFgf)e$WbjE89u9@f4MAwRQa-<gOJiiBfG43I^(FVR zCOtkuLy%@;pXw1t8V4WoxngTer1=t(UL2uja0MyAo??@tfF^Eld9>-$YYfUgtD@mu z*lSebpih)oLE`}|NglDXDz>|=Clxj1r&X!WUvj?XkFi`8yC^3k)u?h-<G-%;+{ZO~ z%qkyvhRrMBL}6?j%+aV?@0-niX^CerdBwMLL>Ie?r;WpX%?ZBp|9}2Y7TrEc6QYcH ztU<_b{j%{rMofZ+AVG*Fw3S8~jN)71e}1UpGWtWqkNx2LNI9u@8RhB9@e`irJ+L{v zK!%K5vsW1L(N%!rP}+Ay8)XcP{~z2Ox7S}qtD7$fjP`|5iECZOg+qc8x_CruLlas* z&Lp*XVPo3i^+k>ddq6?cH+UcT#7x=mw)Uo3M@Q0LwTA&YSMX)!vkQ6bPMtC+*itkn zZMG!_?U~uT?LnP@ZV&L$aayiJ-yWr5mVVar1Dbnm7<shN4FxMg`KwBH-PxYGiwE3` zn%&sZH(G|6n1DBh;$x@)K>C_d#yTyHetql;dZ|hGYfs&5oNJG{UY~KkZekaU<Xp9E z`S`13Q<T;Iu-@HJ0b)xD?3l8SnLcaFq?z?2>BF|1j!B`PIrUV%&863^xFbC@VSH1^ zJlZ%NpJwIDkOJoSwlxnp3{6l`hM@v{0@#$N0tG2)x{zicEud=65g2Vg%<1w&o?0B{ zcfv+BpRsc&$1iRf$eH%MtkU4x|93cEAr)X7)w~LCv<I8<J@bO&Ltx(zA~pP%ts%>V zlkTUkrBfacNfd{~@k@A?SMx5%*sr^I9;rw$<+T(iUm7l7NCk*D*z(rA7jJ`!xvm8t z=SjLWqWgy~o${B$;==YX)g`fxicR4X?rdxJl%Qw!kBWg#CiL-l*4&eEP$%iMsE`T} zl&^R$`(35l{j1Y*$#~%W&PvWp$E~?pcdb-L5oUOdUecIX+tj#8meu1glaaF69}ac* z`3pi3h&0#IsS{O><0xZrp{stx$#%>3=}ULUfPF}o?#CO4Ybt+J)^5P|!WetMyePxe zTXfhSAee5MR{S>J=puSMZWks@0CU1+MCy+GrBfcB@b;XvFyvB_M{Stp$baqD-?yfG zzEL{(kWf)*ky$}a^#H*v|Mi>tb8l>qt3feeD2h@vv2bANLMHzgE`;^vDw%qt#&L=} z=Y50`n090;rPWU`i&t1W^yms~MIRBC@Fan01qgc4N>Pai%`%Uc4wHW+eCW@x?v59> zOnk-CflWe&5ygdhD(61~@U!rEiHHllQW}PmqxyE(EzZE`h{KRuRqTA|y1CsxHk&yj z1;A=a-N&_!a4ifsTYx1x{5TH;EJt}8Y<6B=F?rc%!ZHiT^UBhncUN1F4be0j28&C$ z6~@4^7IL^%;L~y*o<p|Q^TV+>Ojj8FsjR5mJ%$822@xqk<QJ{UtMLypc6a)reVB)i z;EcXX{F+h~x;hT+<2byJX&6p2;Y82Gp7=~C3-&VmemKB&u)rA@Y2>WAl~RtI9zojK zpkW-yu%%zJd>%XA9%&*Fu>u57xR(o5O&q4j6Y|)~)T3j`apXo+&)jQ@7<%yQOykx* z-~=X-UFJ&Y!1KG3-QS!)bzmLlgNYrI65>&H{Fl7WU6j%|7@aEoynvx+{<@-!m!qkC zR6W37(9qW={|({W{LhJYXISHK9-dA1CgaT=7z#_viqi3mP~qn$J$yn=OnMmt<0efT zbO#C+N=V3y+m2D=c~4MFrv5u9!2g)p(q~2sz5vZq4-gE5ZJl3SnDEEf+dY?4detv5 zQJ?gtGuoMvnsN1t`&f;@A==Bb0{jKz9bqw)G0*>;h<Bx}7o{J*o0OJ5Uoy%Vxqd!7 zY_*<IO~QJG9$2=!EU$2&@K#@qbZLs!D=S`cVu!i6+m1aMt)s49H#g&u3^^>#0UZU{ zHf`A>`1R6jv7lewF)cBkS!vJgw#(PtlN;8}Y_`5JX{neKdgCL#g!vgO^k=yD+2XBJ zOXgddaP^cD69tHZ#N><@wz+s?#u34hozku+XdL7A+nDWEc!W2^LWY<rz%Q)Wlm#ak ze#-C++pdmQkAHu+^>ExP!y)L$qvJj13h)<rVo^tfpIpviAb!5FxWnhP$<CDfH%~3u z8Vmk`JUdMRqEN9rZe_`?8TfI}hw<1qP>`+=#`q35va(>?wBnd7KIzr5Qx)JBz~|N` zx&c3LI};P!I1EqH%wc~SX76b2UThzE3#(X9Z!KK*uGxID=;ES)K;chVOne5M{4+6g z%Q-41umIgKT-c00P>8<)FJ>`@nz$V%8+Qc+;^SI2c`)~~k+At(=oMnoXFy<j)Zr6m z<Q^z^Gt9~NnKNa@mg`@&{1zLvJOLTIlmY_e@&!k&xG|@($?F1e`RE~euu8Jfa<dW6 zg5X&o%JP}GjC)|IHv(sTiO7yZf%_EBE4iXnDvW=vaJC(-T<1*9jwL3alL#acNFtC# eAc;WdA@F~(Ot#%(TT*2J0000<MNUMnLSTYKcv3k4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_linkedin.png b/android/app/src/main/res/drawable-xxxhdpi/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..677a22b773e026d31fdd470f5b7a32d90f225189 GIT binary patch literal 1953 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_meteor.png b/android/app/src/main/res/drawable-xxxhdpi/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb52443f0193197cc56f504db12104638ff398d GIT binary patch literal 7061 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_twitter.png b/android/app/src/main/res/drawable-xxxhdpi/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..fda06f996dcb83748397040a319f11fc097baf75 GIT binary patch literal 3353 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/key.png b/android/app/src/main/res/drawable-xxxhdpi/key.png new file mode 100644 index 0000000000000000000000000000000000000000..9879f42682ca643c23080fa5102fb54e22cbdaf9 GIT binary patch literal 3468 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/lock.png b/android/app/src/main/res/drawable-xxxhdpi/lock.png index e4931fe5bfa83aaf9948d0c0447dbe55ac21a7b6..0673b6aa86dabc1abd40013988c83e699020dc5e 100644 GIT binary patch literal 1271 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)Ea{HEjtmSN`?>!lvI4p5JY5_^ zDj46+I-MQtC~_?QUGKJIVNn4eSo2~!9;{pBy*t2h4gZvgjGh($8@bJ!IvyQst#4S6 z<m1@<XtC0Y?y{9P<|^pj;n?S}@aVRUYkiLuU%KY{V(!e@@9%|ux#K(gOil5=-={5S z9`6mSKNzYvJv?ODmAqu1?U%B;1G6@pt(yEVfBkLatTP#=i>6ks@2Oh8Rqo8T72-Q% z-aQYxt?ut#{Pny2%Q@@9__T8Qq!xeENZs^t&Wo;VuXY;!y7<Z9_louT|2=GKjrNMm zJ~(i|;oEJGr#v_9y)UF0^XwD1b#so1ygYO7t;?5#8{4}L4=iF_V#K@B$6q>CFJR@m z?uQq5Yft?qzV-{N*8A5X_d@d(FBAqc+|!zF9-^Mje==SCfoWffMGi0D+!IgjjtZJy zHqUSqaSztHcRO&l(R$C#5g%^Ei64J*qi~PeW%JO6?Ox@dLrsmRgq^&VHzT<y=Uc+- z_H9eU4wY7z7E7DXXtCq@@=^F_@=}#!Su)C^4KY?<&jhd9YM5{(dltj8%wF>qOrIlW ze#qUR^JkCJjGt%z)?YJvoxOk6>#6JVLQQKMuC?Etl6ZRYv8<Z;c|}GcGh<s1T@3Hd zeewDT<ENH`_wDzkdT)Lf-c)Y5`1Y^QKWpu4@>YaY?aDgV^F6TVv&ri9UoU>(k=^p* zt*5_EC)1Oqr+%coRlPgmc+0}&8HzQQCbHq&t$T&-1f+h8be|6k`}#sMs$>3Q(^T)| z-%RV<Z$~xH_0%gg;%3SGr5pEr;tkIJ&3#^9Kb)-5Kb-e#7IXc}w3p|&wcfJJ-MnG? z{A1K*N9mT%RE75j`})J~?e?1P_42II+?&(S%m2LbfVC=8>+by@r_b0d{c$^oxlnWc zyAyeSS;r^cFlyVL?pHCTGV?%k!k@+uH@?2vCXmu!9PR0?|9_c_(FA_BWvhhc-&9Bc zI>&uRZ%a<>cDJW{E?@aF;jeXI|JD|5bJaqIi5_g%{6l5fnQao6@b*6};^|9e&%Kpy zd%ODQ7B!{`{Y!EV?pRZ?ZR=OhO})uGy>33ed7YnU0>5+m`Ok}-KUuB6xzy{+ii^53 z-N|m>7ceb1_V||f`tfBp<|mU=HVIcsc$piW?M{(5_Wbs6hKzNU&*ZsZ<?bF{&dTPo zIcmG9K<@dPa*1n&NoLoQKV7>}WVttb%V%E$hq^XH`x{O5mHE3vrfY9Iy}LbMLcyM4 z)3JrkjM>$*di!qpy_dU}(C~G6`ZR}{RY{qCTThDKetP$~49|!2i;s6?e0C2KJiBt= z+aBBhH$(~;nV0A%z1}G^x2A{rpTbIzf&K*&3;ZY4@9bw_v5#fcU~ptw5Mva;(8S`f zGev>pLZwpe;)?b%oB!`iS6#?XRgvU)*2W;xpuiZQCyA`s^3P+X>sFj!rtgx8eeT8C zEI$#Os+}nd7+5$PicUH(atJXzoz%!Apu%uUm6=t+gJFs{8<)cb294=FSd7Q3@$i0r qm-=}2U-3mdrx^SY<iKY5f3}}F*|SsnPA>(PWDK6JelF{r5}E*q_DWX( delta 1179 zcmV;M1Z4a737rWciBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jN{_e^g0C zK~#7F?ORPqR8bVZ=V?u;go#E>Bt(k{+}Xy;g|!F*#h}I?9CJ2NErQl9qD9cUMO09l zQ|3%9Owna7ENYRs5h5xIA&Z!#!XKt)-sxN${CoGlnfu-wf1cOXn{&=P-*>)q-hKBv z46s%Ddk~NB!6a)yG><Z1L53`de*i%a4~Uawn<U#LfbjwXtp98%^kp@uK|Vp^@%Z-H zKX}nJu^9lW5iut`iltB-H4Nx2+6uQqq0n5uc;-Y%6`Tq$m`<7zy6+nAwCerK;`wAS zcC{p6bdnJ1Wj+r+crHLR8b9!t;ZufK<pICN6aeE}7@Q7=L+=)i?yn5@e<>C-+<z21 zkwSd!dGQ>A1m(Fo#v-EoE6)VzipDR1$p(>Ose4-D3_Lf-;8@}ab*m?j01;{+a(%fi zaxg_J{&QeBL5m%KzNxtwL<W_#UL2!OW!cK$izF~;><EYYv&ClfyB46kySFL@@QSJ^ zu>&L0eTKnqRt9&C)Ya9ce?+mv!^4FWlizDilU*WF8bvV+Hh}3u#G3Z@=J5rag9}#z z3=9kuC4SD16WM)IY+AewVCOs9nqEp{1dgtUu_Gq3+ji>-iTbI$w5Y1SzJ6AaA}5op zHQ>juxyyFN^RAZ!phmTL&Ya)F@1+hslU2g8IR}|P7rWyL=;;|Ke@~`oJ|eOmA|Of} z>j*cs@aI+J&(%gnLRU2Qn36P!?g3!G0|mwVTU+ZBB7ZiU;|WNnX0J$#2N*5hW<=Z; z&&l%~nOviyVmJrRMdZuH=4b*kJH2nTYL{C;08+GJsq%WmlG$L5)0$9d#bgQEDeiW% zQ*<-|Gf6lsES{K=f1>xiE}j?6bMoAl;<<quG0#cpv^P2ufU&gv6;-(PhCQSUuWfD{ zPBxH^1fWgJaY@dxNXx0u5}#{xCij>qkqswN_=3%m05o!Y7cwllpyTV{l8<@0lwwFY zWh0?1z|hc8K)PK;e4h=_t>0wqgE$A4{pTk3%B;!)BofoofAc*u<EsqFD?6P6=FbnJ ze0JPK@!X~?Knl#AvSeVeDVfhJyB&rdHyOUN00upTvSe#*cfw6sfVD2tYkVz$*NSem ze4Bm(qzhVS^hquK+v=dDqrfUn(-fY*=;Ss;3G@0Upkr|v9g$C3c#(k?!Rxe1n^@_i zUE<qF_{_*ke>?wdJy~U<kfqz`sCmwElg;U#6SHw!Qh9BVHHJ=TcL_@<z@~o$v;ba@ z;YQ1+Ct#y>%xk{Vw}1?YUUj39aMK}~e=Y5u(byY$6IH8l(2szMT7Hbx6X3_Ls??+> zKt(M-#_9?1V^>vb(i5PfmLFsF1o*M5DmCc|P*KZ|aj|*={Mc2Mn)C#ysO864Jpq2~ zs!C0I0#wxUW2~M4KXz56Cgm?i===8y`iYG7YjYLUJjK$NA{DBsl?9;R22~Q!9aW(9 t8n4%Y_1c-$;-x2GwUl13IGcU~{sHg;Rhp}qnmqsj002ovPDHLkV1hb}F3|u0 diff --git a/android/app/src/main/res/drawable-xxxhdpi/mail.png b/android/app/src/main/res/drawable-xxxhdpi/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..780afd4d9f1a856f1b8dfcedad2ec8bebc045c1a GIT binary patch literal 1568 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 Sk}HV-0000<MNUMnLSTYoG~qG; literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/mention.png b/android/app/src/main/res/drawable-xxxhdpi/mention.png index 14b2374d41c9cf1bc2fc914eb940bcbbc339b036..5ef79b4b427dbeaff44f337b8157174a44858fe2 100644 GIT binary patch literal 3086 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 literal 3242 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 diff --git a/android/app/src/main/res/drawable-xxxhdpi/more.png b/android/app/src/main/res/drawable-xxxhdpi/more.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8ab1ce745788c9d01734377705a46bc9c7372e GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)Ea{HEjtmSN`?>!lvNA9*7J0fj zhEy=Vz4<V=*+78p!iwsP2QRHPa({k8O!u$eqIxYIj%iv7=P!9q+$d->TcT!qw^IWH zBNGdUfPw>p;n07;qR;u!v>pC|``hOg@AJ9u5G#DYbN^Fq(d*M2Zxk(Ntnxqe@NbgX zqM0`i@%q`W@_u^l)&EalC$9d#XKB%W;VZZ2={@VXzRCQ+dC`vSTWc)Na?XBobM5u% zQ5sQ4l{T5YoA}$~jAGc_>oZgjSjnwWeCS%mJIxH)5jWZ!{CD;huHbDxa%bDVvn{IE zGoPJ(d*sQ5#a9e1CyJ#MJaLJ#$bQAFp}vXjl~3*ymvbhwwmPWjDA_hkIap4VJMhZ- ztc&HuIFG-aNIv^e&t&)1YE84c`lhS-vnsc3wqkhdvh7jm{xe`b%HO66TRvK`b=^&+ zOOq-W*>w~t`B$7Zo13<1&WSaBUg)6&47b^=bqrclg@gha#qR-QgTd3)&t;ucLK6Tp C-?F{{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/options.png b/android/app/src/main/res/drawable-xxxhdpi/options.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a4f02131f10bc27081ed06d957c198c409891b GIT binary patch literal 4580 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⁡?bEGySN zK%vC9+=vAD8HRUiJ;qLt%rXuD&J2!OnJvlk<9IEolQ#4SI$c^QsFMo9En1JU)0<CL z0Kl1QZ4FHfGxi*I<5lTpa<I~)9kty?#c3{AZR9+kOvoW?0N~8?J@{Qc;l{i^VKWn2 zP)QTYZzLls@Ai%ynb8fpSp@(uXJ6xRK8|2nhOuM2O4$ds7v}SiLjd=9-Ok2r2qNnM zPzn_}cu@|oDuh!vl`;+7rSA!LI;Xy_?t_7+r7eY=0f4gyYk&ipwqXu|Ex~)aHkJ#K zihhPA_Y1u4@vC9_vpT7kQvfKc<OeqO$`oS;>?Xx;Ft~lnesV~OeNjzK4M33n#}oii zip?)vl9{v|)q-2`D_oau#7(CQv>sHQDLI%507@Zo7tqys$F1Obek8k6pePptf0K%2 zY2=pEDF0l&ni2qtFns=PlbI|pMjPP@#V;S-K2!gSV53Vtb#<mXh1JvmP?YWWx4FYi zo<)fKLyRGut@xYW#Zs*gaq8+?JGC|Tt(-C)%Xt9+MQVM$hN-X!GXaF_;Fc(1rg2a1 zmsp3*8P8x7&8ahaO~YRtBY6dYXx@FhcMqi<ol|jLTLTV-ZvY^wqr<cH&doa}yV@{- z(}W4oCOV>WeWpk6j4WH;0w7)pyeruwi49mLHyH}?VvXYHOjrm$QiqQEPJz)aM4(MJ zTDl?K1)1?>$i;WT03cp?s4j$Hu>Ha?k;X7NJO<(XSB2wlDlpViK`5)hKehr2EeCBW zwz_rln^RF|cc2^Efj@Q!!f|vy*$bL>#Az2rw!`6Y?C)#T#b=q9-~R{kC(h^Co><!e O0000<MNUMnLSTZ{QhlQU literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/subscription_hashtag.png b/android/app/src/main/res/drawable-xxxhdpi/subscription_hashtag.png deleted file mode 100644 index d76738e3ae23e5316c0c1a574b45f3dcff568d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEEa{HEjtmSN`?>!lvI6<DJY5_^ zA~@epH{@$D;9=%mpOW+-k;mtc(6v+EsjQ0p$3whJJI`gVzGn3E-0Qkyn#cEDU2%8g z?t8EPJ$V09<c2DrBS#r$$={{VgUS!C|C=*O?_x#M<?7JtDZ3-8l<bnYrX0!Pbd;Vc zp`hV_#(2c}Np0eh97*}Yn#MhzZ<Yx=*BlYi=)5V^WM*V|M7V}gTUAaf_ulMUpeq?X MUHx3vIVCg!0Q{Cy{r~^~ diff --git a/android/app/src/main/res/drawable-xxxhdpi/subscription_lock.png b/android/app/src/main/res/drawable-xxxhdpi/subscription_lock.png deleted file mode 100644 index ba072523b8a1ac9e37756089251c03f6566e8050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP0006>Nkl<ZSPAV`%}N|W5Uy%xHwx|xh)5upfbS6yAtJ)4u>K_E5)yLA3xvFY zr-&C(qYM6kh(a!TkARmz2*DRH5VN~>rE7KAo|>8MX;;i1dM?vdUG>#BUsrbzLLX0~ zaXjAE?HP?UjRa2!ag5=R=z<WwE5a|4icahGxnFlJgLg^X-#;Du+rIip056DWs22tz zUYjD@kD}oZi;FWCy<+p`yb12?9X;1X4FIa;0T%o4QX$q?m*TVHnCy(ox{5tJyNB;I z=@Wl)j7c@lWsKqq*_qM`-YCc9AoWoO;G6MmRzQ8NR^ca?Xf|P@1^O9icxBpPQk2yS z)ofWMOA+Lr`_sBQx0N%!)ifL9{mN3jVa8gJ=$NKI)#tsV*Ji`4nQ^rngO?+f;iqMK zGNncrAU)y@A;}Tp)avs5dJ#EB;5m-rSpJ|cD%EZ<yPl$vQ$apTTGakw?^Xr)mJ1hw z=J`$Uz0p9Qk~u^8x`NST*Ae7Ykk2`r9QPbAYf`A}yVDBXueT3lGInAYy`2R45KbkV z4bf{^Q?ZuO$uYT>3o_XD<n7o=kZ%Y(k9VtW`;29-#LmNV5=^eIBsn=s65Ho3b0u~j zmXjb5joOKE9RId$pK&HvVCP}E3Fc)zpf3>YSM1C|y|sH_uFwDXyj)&LaSBV^?^+DJ zf|2VBWly-`edk?0Kky0$g1$>G<AZ`y5nnqf=&P8F4+=^}eC?p1uVOMjC@2;2wS$7b siphBA|DfxCO#<Gx9hSIXMF(ENe`7DfS!x2%D*ylh07*qoM6N<$f;RXuJpcdz diff --git a/android/app/src/main/res/drawable-xxxhdpi/user.png b/android/app/src/main/res/drawable-xxxhdpi/user.png new file mode 100644 index 0000000000000000000000000000000000000000..b4374ec02805bcae2960310426e588f3af9ad0c4 GIT binary patch literal 2748 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 CKt{&^ literal 0 HcmV?d00001 diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index e7b82839b..7c191903f 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -16,22 +16,14 @@ export const LOGIN = createRequestTypes('LOGIN', [ 'SUBMIT', 'REGISTER_SUBMIT', 'REGISTER_REQUEST', - 'REGISTER_SUCCESS', - 'REGISTER_INCOMPLETE', 'SET_USERNAME_SUBMIT', 'SET_USERNAME_REQUEST', 'SET_USERNAME_SUCCESS', - 'OPEN', - 'CLOSE', 'SET_SERVICES', - 'REMOVE_SERVICES', 'SET_PREFERENCE', 'SET_SORT_PREFERENCE' ]); -export const FORGOT_PASSWORD = createRequestTypes('FORGOT_PASSWORD', [ - ...defaultTypes, - 'INIT' -]); +export const FORGOT_PASSWORD = createRequestTypes('FORGOT_PASSWORD'); export const USER = createRequestTypes('USER', ['SET']); export const ROOMS = createRequestTypes('ROOMS', [ ...defaultTypes, diff --git a/app/actions/login.js b/app/actions/login.js index 529039ce4..cc5c17150 100644 --- a/app/actions/login.js +++ b/app/actions/login.js @@ -19,23 +19,13 @@ export function registerSubmit(credentials) { credentials }; } + export function registerRequest(credentials) { return { type: types.LOGIN.REGISTER_REQUEST, credentials }; } -export function registerSuccess(credentials) { - return { - type: types.LOGIN.REGISTER_SUCCESS, - credentials - }; -} -export function registerIncomplete() { - return { - type: types.LOGIN.REGISTER_INCOMPLETE - }; -} export function setUsernameSubmit(credentials) { return { @@ -127,18 +117,6 @@ export function setUser(action) { }; } -export function open() { - return { - type: types.LOGIN.OPEN - }; -} - -export function close() { - return { - type: types.LOGIN.CLOSE - }; -} - export function setLoginServices(data) { return { type: types.LOGIN.SET_SERVICES, @@ -146,12 +124,6 @@ export function setLoginServices(data) { }; } -export function removeLoginServices() { - return { - type: types.LOGIN.REMOVE_SERVICES - }; -} - export function setPreference(preference) { return { type: types.LOGIN.SET_PREFERENCE, diff --git a/app/constants/colors.js b/app/constants/colors.js index e7545ccae..be30581ea 100644 --- a/app/constants/colors.js +++ b/app/constants/colors.js @@ -1,5 +1,5 @@ export const COLOR_DANGER = '#f5455c'; -export const COLOR_BUTTON_PRIMARY = '#2D6AEA'; +export const COLOR_BUTTON_PRIMARY = '#1d74f5'; export const COLOR_TEXT = '#292E35'; export const COLOR_SEPARATOR = '#CBCED1'; export const STATUS_COLORS = { diff --git a/app/constants/headerOptions.js b/app/constants/headerOptions.js new file mode 100644 index 000000000..a02384fc9 --- /dev/null +++ b/app/constants/headerOptions.js @@ -0,0 +1,60 @@ +import { Platform } from 'react-native'; + +export const DARK_HEADER = { + statusBar: { + backgroundColor: '#2F343D', + style: 'light' + }, + topBar: { + backButton: { + color: '#fff' + }, + background: { + color: '#2F343D' + }, + title: { + color: '#FFF' + }, + leftButtonStyle: { + color: '#FFF' + }, + rightButtonStyle: { + color: '#FFF' + } + } +}; + +export const LIGHT_HEADER = { + statusBar: { + backgroundColor: '#FFF', + style: 'dark' + }, + topBar: { + backButton: { + color: '#1d74f5' + }, + background: { + color: undefined + }, + title: { + color: '#0C0D0F' + }, + leftButtonStyle: { + color: '#1d74f5' + }, + rightButtonStyle: { + color: '#1d74f5' + } + } +}; + +export const DEFAULT_HEADER = { + ...Platform.select({ + ios: { + ...LIGHT_HEADER + }, + android: { + ...DARK_HEADER + } + }) +}; diff --git a/app/constants/settings.js b/app/constants/settings.js index ec9916268..12277bf58 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -8,33 +8,9 @@ export default { Accounts_NamePlaceholder: { type: 'valueAsString' }, - Accounts_OAuth_Facebook: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Github: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Gitlab: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Google: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Linkedin: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Meteor: { - type: 'valueAsBoolean' - }, - Accounts_OAuth_Twitter: { - type: 'valueAsBoolean' - }, Accounts_PasswordPlaceholder: { type: 'valueAsString' }, - Accounts_RepeatPasswordPlaceholder: { - type: 'valueAsString' - }, CROWD_Enable: { type: 'valueAsBoolean' }, @@ -84,4 +60,4 @@ export default { type: 'valueAsBoolean' } }; -export const settingsUpdatedAt = new Date('2018-09-10'); +export const settingsUpdatedAt = new Date('2018-11-14'); diff --git a/app/containers/Button/index.js b/app/containers/Button/index.js index f1f3ade3a..b632abc58 100644 --- a/app/containers/Button/index.js +++ b/app/containers/Button/index.js @@ -1,32 +1,30 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { - StyleSheet, View, Text, Platform, ActivityIndicator -} from 'react-native'; +import { StyleSheet, Text, ActivityIndicator } from 'react-native'; +import { RectButton } from 'react-native-gesture-handler'; -import { COLOR_BUTTON_PRIMARY, COLOR_TEXT } from '../../constants/colors'; -import Touch from '../../utils/touch'; -import { scale, moderateScale, verticalScale } from '../../utils/scaling'; +import { COLOR_BUTTON_PRIMARY } from '../../constants/colors'; +import sharedStyles from '../../views/Styles'; const colors = { background_primary: COLOR_BUTTON_PRIMARY, background_secondary: 'white', text_color_primary: 'white', - text_color_secondary: COLOR_TEXT + text_color_secondary: COLOR_BUTTON_PRIMARY }; /* eslint-disable react-native/no-unused-styles */ const styles = StyleSheet.create({ container: { - paddingHorizontal: scale(15), + paddingHorizontal: 15, justifyContent: 'center', - height: scale(48) + height: 48, + borderRadius: 2, + marginBottom: 10 }, text: { - fontSize: moderateScale(18), - height: verticalScale(20), - lineHeight: verticalScale(20), + fontSize: 18, textAlign: 'center', fontWeight: '500' }, @@ -36,30 +34,25 @@ const styles = StyleSheet.create({ background_secondary: { backgroundColor: colors.background_secondary }, - text_color_primary: { + text_primary: { + ...sharedStyles.textMedium, color: colors.text_color_primary }, - text_color_secondary: { + text_secondary: { + ...sharedStyles.textBold, color: colors.text_color_secondary }, - margin: { - marginBottom: verticalScale(10) - }, disabled: { - opacity: 0.5 - }, - border: { - borderRadius: scale(2) + backgroundColor: '#e1e5e8' } }); export default class Button extends React.PureComponent { static propTypes = { - title: PropTypes.string, + title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]), type: PropTypes.string, onPress: PropTypes.func, disabled: PropTypes.bool, - margin: PropTypes.any, backgroundColor: PropTypes.string, loading: PropTypes.bool } @@ -74,32 +67,26 @@ export default class Button extends React.PureComponent { render() { const { - title, type, onPress, disabled, margin, backgroundColor, loading, ...otherProps + title, type, onPress, disabled, backgroundColor, loading, ...otherProps } = this.props; return ( - <Touch + <RectButton onPress={onPress} - accessibilityTraits='button' - style={Platform.OS === 'ios' && [(margin || styles.margin), styles.border]} - disabled={disabled || loading} + enabled={!(disabled || loading)} + style={[ + styles.container, + styles.border, + backgroundColor ? { backgroundColor } : styles[`background_${ type }`], + disabled && styles.disabled + ]} {...otherProps} > - <View - style={[ - styles.container, - styles.border, - backgroundColor ? { backgroundColor } : styles[`background_${ type }`], - Platform.OS === 'android' && (margin || styles.margin), - disabled && styles.disabled - ]} - > - { - loading - ? <ActivityIndicator color={colors[`text_color_${ type }`]} /> - : <Text style={[styles.text, styles[`text_color_${ type }`]]}>{title}</Text> - } - </View> - </Touch> + { + loading + ? <ActivityIndicator color={colors[`text_color_${ type }`]} /> + : <Text style={[styles.text, styles[`text_${ type }`]]}>{title}</Text> + } + </RectButton> ); } } diff --git a/app/containers/Sidebar.js b/app/containers/Sidebar.js index bec5be297..975606dc0 100644 --- a/app/containers/Sidebar.js +++ b/app/containers/Sidebar.js @@ -85,7 +85,7 @@ const styles = StyleSheet.create({ const keyExtractor = item => item.id; @connect(state => ({ - server: state.server.server, + Site_Name: state.settings.Site_Name, user: { id: state.login.user && state.login.user.id, language: state.login.user && state.login.user.language, @@ -101,7 +101,7 @@ export default class Sidebar extends Component { static propTypes = { baseUrl: PropTypes.string, componentId: PropTypes.string, - server: PropTypes.string.isRequired, + Site_Name: PropTypes.string.isRequired, user: PropTypes.object, logout: PropTypes.func.isRequired, appStart: PropTypes.func @@ -289,7 +289,7 @@ export default class Sidebar extends Component { render() { const { showStatus } = this.state; - const { user, server, baseUrl } = this.props; + const { user, Site_Name, baseUrl } = this.props; if (!user) { return null; @@ -315,7 +315,7 @@ export default class Sidebar extends Component { <Status style={styles.status} id={user.id} /> <Text numberOfLines={1}>{user.username}</Text> </View> - <Text style={styles.currentServerText} numberOfLines={1}>{server}</Text> + <Text style={styles.currentServerText} numberOfLines={1}>{Site_Name}</Text> </View> <Icon name={showStatus ? 'keyboard-arrow-up' : 'keyboard-arrow-down'} diff --git a/app/containers/TextInput.js b/app/containers/TextInput.js index ce77df705..6848f85ce 100644 --- a/app/containers/TextInput.js +++ b/app/containers/TextInput.js @@ -1,16 +1,16 @@ import React from 'react'; import { - View, StyleSheet, Text, TextInput, ViewPropTypes, Platform + View, StyleSheet, Text, TextInput, ViewPropTypes, Image } from 'react-native'; import PropTypes from 'prop-types'; -import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import { BorderlessButton } from 'react-native-gesture-handler'; import sharedStyles from '../views/Styles'; import { COLOR_DANGER, COLOR_TEXT } from '../constants/colors'; const styles = StyleSheet.create({ inputContainer: { - marginBottom: 15 + marginBottom: 10 }, label: { marginBottom: 10, @@ -19,15 +19,23 @@ const styles = StyleSheet.create({ fontWeight: '700' }, input: { - fontSize: 14, - paddingTop: 12, - paddingBottom: 12, - paddingHorizontal: 10, + ...sharedStyles.textRegular, + height: 48, + fontSize: 17, + color: '#9EA2A8', + letterSpacing: 0, + paddingLeft: 14, + paddingRight: 14, borderWidth: 1.5, borderRadius: 2, backgroundColor: 'white', - borderColor: '#E7EBF2', - color: 'black' + borderColor: '#E7EBF2' + }, + inputIconLeft: { + paddingLeft: 45 + }, + inputIconRight: { + paddingRight: 45 }, labelError: { color: COLOR_DANGER @@ -39,21 +47,23 @@ const styles = StyleSheet.create({ wrap: { position: 'relative' }, - icon: { + iconContainer: { position: 'absolute', - color: 'rgba(0,0,0,.45)', - height: 45, - textAlignVertical: 'center', - ...Platform.select({ - ios: { - padding: 12 - }, - android: { - paddingHorizontal: 12, - paddingTop: 18, - paddingBottom: 6 - } - }) + top: 14 + }, + iconLeft: { + left: 15 + }, + iconRight: { + right: 15 + }, + icon: { + tintColor: '#2F343D', + width: 20, + height: 20 + }, + password: { + tintColor: '#9ea2a8' } }); @@ -79,54 +89,51 @@ export default class RCTextInput extends React.PureComponent { showPassword: false } - icon = ({ - name, - onPress, - style, - testID - }) => <Icon name={name} style={[styles.icon, style]} size={20} onPress={onPress} testID={testID} /> - - iconLeft = (name) => { - const { testID } = this.props; - return this.icon({ - name, - onPress: null, - style: { left: 0 }, - testID: testID ? `${ testID }-icon-left` : null - }); + get iconLeft() { + const { testID, iconLeft } = this.props; + return ( + <Image + source={{ uri: iconLeft }} + testID={testID ? `${ testID }-icon-left` : null} + style={[styles.iconContainer, styles.iconLeft, styles.icon]} + /> + ); } - iconPassword = (name) => { + get iconPassword() { + const { showPassword } = this.state; const { testID } = this.props; - return this.icon({ - name, - onPress: () => this.tooglePassword(), - style: { right: 0 }, - testID: testID ? `${ testID }-icon-right` : null - }); + return ( + <BorderlessButton onPress={this.tooglePassword} style={[styles.iconContainer, styles.iconRight]}> + <Image + source={{ uri: showPassword ? 'eye' : 'eye_slash' }} + testID={testID ? `${ testID }-icon-right` : null} + style={[styles.icon, styles.password]} + /> + </BorderlessButton> + ); } tooglePassword = () => { - const { showPassword } = this.state; - this.setState({ showPassword: !showPassword }); + this.setState(prevState => ({ showPassword: !prevState.showPassword })); } render() { + const { showPassword } = this.state; const { label, error, secureTextEntry, containerStyle, inputRef, iconLeft, inputStyle, testID, placeholder, ...inputProps } = this.props; - const { showPassword } = this.state; return ( <View style={[styles.inputContainer, containerStyle]}> - {label ? <Text contentDescription={null} accessibilityLabel={null} style={[styles.label, error.error && styles.labelError]}>{label}</Text> : null } + {label ? <Text contentDescription={null} accessibilityLabel={null} style={[styles.label, error.error && styles.labelError]}>{label}</Text> : null} <View style={styles.wrap}> <TextInput style={[ styles.input, error.error && styles.inputError, inputStyle, - iconLeft && { paddingLeft: 40 }, - secureTextEntry && { paddingRight: 40 } + iconLeft && styles.inputIconLeft, + secureTextEntry && styles.inputIconRight ]} ref={inputRef} autoCorrect={false} @@ -136,11 +143,12 @@ export default class RCTextInput extends React.PureComponent { testID={testID} accessibilityLabel={placeholder} placeholder={placeholder} + placeholderTextColor='#9ea2a8' contentDescription={placeholder} {...inputProps} /> - {iconLeft ? this.iconLeft(iconLeft) : null} - {secureTextEntry ? this.iconPassword(showPassword ? 'eye-off' : 'eye') : null} + {iconLeft ? this.iconLeft : null} + {secureTextEntry ? this.iconPassword : null} </View> {error.error ? <Text style={sharedStyles.error}>{error.reason}</Text> : null} </View> diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index 9f67b428b..74563eed6 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -121,14 +121,16 @@ export default { Choose_from_library: 'Choose from library', Code: 'Code', Collaborative: 'Collaborative', + Confirm: 'Confirm', Connect: 'Connect', Connect_to_a_server: 'Connect to a server', Connected: 'Connected', Connecting: 'Connecting...', + Continue_with: 'Continue with', Copied_to_clipboard: 'Copied to clipboard!', Copy_Message: 'Copy Message', Copy_Permalink: 'Copy Permalink', - Create_account: 'Create account', + Create_account: 'Create an account', Create_Channel: 'Create Channel', Create_a_new_workspace: 'Create a new workspace', Create: 'Create', @@ -140,12 +142,14 @@ export default { Description: 'Description', Disable_notifications: 'Disable notifications', Direct_Messages: 'Direct Messages', + Dont_Have_An_Account: 'Don\'t have an account?', Do_you_really_want_to_key_this_room_question_mark: 'Do you really want to {{key}} this room?', edit: 'edit', erasing_room: 'erasing room', Edit: 'Edit', Email_or_password_field_is_empty: 'Email or password field is empty', Email: 'Email', + email: 'e-mail', Enable_notifications: 'Enable notifications', Everyone_can_access_this_channel: 'Everyone can access this channel', Error_uploading: 'Error uploading', @@ -161,7 +165,6 @@ export default { Group_by_type: 'Group by type', Has_joined_the_channel: 'Has joined the channel', Has_left_the_channel: 'Has left the channel', - I_have_an_account: 'I have an account', Invisible: 'Invisible', Invite: 'Invite', is_a_valid_RocketChat_instance: 'is a valid Rocket.Chat instance', @@ -175,8 +178,11 @@ export default { Leave_channel: 'Leave channel', leaving_room: 'leaving room', leave: 'leave', + Legal: 'Legal', Livechat: 'Livechat', Login: 'Login', + Login_error: 'Your credentials were rejected! Please try again.', + Login_with: 'Login with', Logout: 'Logout', Members: 'Members', Mentioned_Messages: 'Mentioned Messages', @@ -197,7 +203,6 @@ export default { N_users: '{{n}} users', name: 'name', Name: 'Name', - New_in_RocketChat_question_mark: 'New in Rocket.Chat?', New_Message: 'New Message', New_Password: 'New Password', New_Server: 'New Server', @@ -222,7 +227,6 @@ export default { Only_authorized_users_can_write_new_messages: 'Only authorized users can write new messages', Open_emoji_selector: 'Open emoji selector', Open_Source_Communication: 'Open Source Communication', - Or_continue_using_social_accounts: 'Or continue using social accounts', Password: 'Password', Permalink_copied_to_clipboard: 'Permalink copied to clipboard!', Pin: 'Pin', @@ -277,6 +281,7 @@ export default { Send_message: 'Send message', Server: 'Server', Servers: 'Servers', + Set_username_subtitle: 'The username is used to allow others to mention you in messages', Settings: 'Settings', Settings_succesfully_changed: 'Settings succesfully changed!', Share_Message: 'Share Message', @@ -308,6 +313,7 @@ export default { topic: 'topic', Topic: 'Topic', Try_again: 'Try again', + Two_Factor_Authentication: 'Two-factor Authentication', Type_the_channel_name_here: 'Type the channel name here', unarchive: 'unarchive', UNARCHIVE: 'UNARCHIVE', @@ -330,13 +336,13 @@ export default { User_was_set_role_by_: '{{user}} was set {{role}} by {{userBy}}', Username_is_empty: 'Username is empty', Username: 'Username', + Username_or_email: 'Username or email', Validating: 'Validating', Video_call: 'Video call', Voice_call: 'Voice call', Welcome: 'Welcome', - Welcome_title_pt_1: 'Prepare to take off with', - Welcome_title_pt_2: 'the ultimate chat platform', Welcome_to_RocketChat: 'Welcome to Rocket.Chat', + Whats_your_2fa: 'What\'s your 2FA code?', Yes_action_it: 'Yes, {{action}} it!', Yesterday: 'Yesterday', You_are_in_preview_mode: 'You are in preview mode', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index bce2d48ea..3232282b2 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -128,10 +128,12 @@ export default { Choose_from_library: 'Escolha da biblioteca', Code: 'Código', Collaborative: 'Colaborativo', + Confirm: 'Confirmar', Connect: 'Conectar', Connect_to_a_server: 'Conectar a um servidor', Connected: 'Conectado', Connecting: 'Conectando...', + Continue_with: 'Entrar com', Copied_to_clipboard: 'Copiado para a área de transferência!', Copy_Message: 'Copiar Mensagem', Copy_Permalink: 'Copiar Link-Permanente', @@ -147,12 +149,14 @@ export default { Description: 'Descrição', Disable_notifications: 'Desabilitar notificações', Direct_Messages: 'Mensagens Diretas', + Dont_Have_An_Account: 'Não tem uma conta?', Do_you_really_want_to_key_this_room_question_mark: 'Você quer realmente {{key}} esta sala?', edit: 'editar', erasing_room: 'apagando sala', Edit: 'Editar', Email_or_password_field_is_empty: 'Email ou senha estão vazios', Email: 'Email', + email: 'e-mail', Enable_notifications: 'Habilitar notificações', Everyone_can_access_this_channel: 'Todos podem acessar este canal', Error_uploading: 'Erro subindo', @@ -168,7 +172,6 @@ export default { Group_by_type: 'Grupos por tipo', Has_joined_the_channel: 'Entrou no canal', Has_left_the_channel: 'Saiu da conversa', - I_have_an_account: 'Eu tenho uma conta', Invisible: 'InvisÃvel', Invite: 'Convidar', is_typing: 'está digitando', @@ -180,8 +183,11 @@ export default { Leave_channel: 'Sair do canal', leaving_room: 'saindo do canal', leave: 'sair', + Legal: 'Legal', Livechat: 'Livechat', Login: 'Entrar', + Login_error: 'Suas credenciais foram rejeitadas. Tente novamente por favor!', + Login_with: 'Login with', Logout: 'Sair', Members: 'Membros', Mentioned_Messages: 'Mensagens mencionadas', @@ -224,7 +230,6 @@ export default { Only_authorized_users_can_write_new_messages: 'Somente usuários autorizados podem escrever novas mensagens', Open_emoji_selector: 'Abrir seletor de emoji', Open_Source_Communication: 'Comunicação Open Source', - Or_continue_using_social_accounts: 'Ou continue usando redes sociais', Password: 'Senha', Permalink_copied_to_clipboard: 'Link-permanente copiado para a área de transferência!', Pin: 'Fixar', @@ -278,6 +283,7 @@ export default { Send_audio_message: 'Enviar mensagem de áudio', Send_message: 'Enviar mensagem', Server: 'Servidor', + Set_username_subtitle: 'O usuário é utilizado para permitir que você seja mencionado em mensagens', Settings: 'Configurações', Settings_succesfully_changed: 'Configurações salvas com sucesso!', Share_Message: 'Compartilhar Mensagem', @@ -306,6 +312,7 @@ export default { topic: 'tópico', Topic: 'Tópico', Try_again: 'Tentar novamente', + Two_Factor_Authentication: 'Autenticação de dois fatores', Type_the_channel_name_here: 'Digite o nome do canal', unarchive: 'desarquivar', UNARCHIVE: 'DESARQUIVAR', @@ -328,12 +335,12 @@ export default { User_was_set_role_by_: '{{user}} foi definido como {{role}} por {{userBy}}', Username_is_empty: 'Usuário está vazio', Username: 'Usuário', + Username_or_email: 'Usuário ou email', Video_call: 'Chamada de vÃdeo', Voice_call: 'Chamada de voz', Welcome: 'Bem vindo', - Welcome_title_pt_1: 'Prepare-se para decolar com', - Welcome_title_pt_2: 'a melhor plataforma de chat', Welcome_to_RocketChat: 'Bem vindo ao Rocket.Chat', + Whats_your_2fa: 'Qual seu código de autenticação?', Yes_action_it: 'Sim, {{action}}!', Yesterday: 'Ontem', You_are_in_preview_mode: 'Está é uma prévia do canal', diff --git a/app/i18n/locales/ru.js b/app/i18n/locales/ru.js index b7bf873a5..7fb8a0cc4 100644 --- a/app/i18n/locales/ru.js +++ b/app/i18n/locales/ru.js @@ -200,7 +200,6 @@ export default { Online: 'Онлайн', Only_authorized_users_can_write_new_messages: 'Только авторизованные пользователи могут пиÑать новые ÑообщениÑ', Open_emoji_selector: 'Открыть Ñелектор emoji', - Or_continue_using_social_accounts: 'Или продолжить, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñоциальные учетные запиÑи', Password: 'Пароль', Permalink_copied_to_clipboard: 'ПоÑтоÑÐ½Ð½Ð°Ñ ÑÑылка Ñкопирована в буфер обмена!', Pin: 'Прикрепить Ñообщение', @@ -305,8 +304,6 @@ export default { Video_call: 'Видеозвонок', Voice_call: 'ГолоÑовой вызов', Welcome: 'Добро пожаловать', - Welcome_title_pt_1: 'ПриготовьтеÑÑŒ к взлету Ñ', - Welcome_title_pt_2: 'передовой чат-платформой', Yes_action_it: 'Да, {{action}} Ñто!', Yesterday: 'Вчера', You_are_in_preview_mode: 'Ð’Ñ‹ находитеÑÑŒ в режиме предварительного проÑмотра', diff --git a/app/i18n/locales/zh-CN.js b/app/i18n/locales/zh-CN.js index 355435e37..a5352d3cb 100644 --- a/app/i18n/locales/zh-CN.js +++ b/app/i18n/locales/zh-CN.js @@ -222,7 +222,6 @@ export default { Only_authorized_users_can_write_new_messages: 'åªæœ‰ç»è¿‡æŽˆæƒçš„用户æ‰èƒ½å†™æ–°æ¶ˆæ¯', Open_emoji_selector: '打开emoji选择器', Open_Source_Communication: 'å¼€æºæ²Ÿé€š', - Or_continue_using_social_accounts: '或者继ç»ä½¿ç”¨ç¤¾äº¤è´¦å·', Password: '密ç ', Permalink_copied_to_clipboard: '永久链接已å¤åˆ¶åˆ°å‰ªè´´æ¿ï¼', Pin: '订ä½', @@ -333,8 +332,6 @@ export default { Video_call: '视频电è¯', Voice_call: 'è¯éŸ³ç”µè¯', Welcome: '欢迎', - Welcome_title_pt_1: '准备起飞', - Welcome_title_pt_2: '终æžèŠå¤©å¹³å°', Welcome_to_RocketChat: '欢迎æ¥åˆ° Rocket.Chat', Yes_action_it: '是的,{{action}}它ï¼', Yesterday: '昨天', diff --git a/app/index.js b/app/index.js index 4acf28f31..c6cb8f6f6 100644 --- a/app/index.js +++ b/app/index.js @@ -1,6 +1,8 @@ import { Component } from 'react'; -import { Linking, Platform, Dimensions } from 'react-native'; +import { Linking, Platform } from 'react-native'; import { Navigation } from 'react-native-navigation'; +import { Provider } from 'react-redux'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import store from './lib/createStore'; import { appInit } from './actions'; @@ -10,8 +12,6 @@ import { deepLinkingOpen } from './actions/deepLinking'; import parseQuery from './lib/methods/helpers/parseQuery'; import { initializePushNotifications } from './push'; -const isAndroid = () => Platform.OS === 'android'; - const startLogged = () => { Navigation.setRoot({ root: { @@ -57,6 +57,30 @@ const startNotLogged = () => { }); }; +let SetUsernameView = null; +const startSetUsername = () => { + if (SetUsernameView == null) { + SetUsernameView = require('./views/SetUsernameView').default; + Navigation.registerComponentWithRedux('SetUsernameView', () => gestureHandlerRootHOC(SetUsernameView), Provider, store); + } + Navigation.setRoot({ + root: { + stack: { + children: [{ + component: { + name: 'SetUsernameView' + } + }], + options: { + layout: { + orientation: ['portrait'] + } + } + } + } + }); +}; + const handleOpenURL = ({ url }) => { if (url) { url = url.replace(/rocketchat:\/\/|https:\/\/go.rocket.chat\//, ''); @@ -83,15 +107,17 @@ export default class App extends Component { Navigation.setDefaultOptions({ topBar: { backButton: { - icon: { uri: 'back', scale: Dimensions.get('window').scale } + showTitle: false }, - title: { - color: isAndroid() ? '#FFF' : undefined + leftButtonStyle: { + color: '#FFF' }, - background: { - color: isAndroid() ? '#2F343D' : undefined + rightButtonStyle: { + color: '#FFF' }, - buttonColor: '#FFF' + title: { + fontFamily: Platform.OS === 'ios' ? 'System' : 'sans-serif-medium' + } }, sideMenu: { left: { @@ -121,6 +147,8 @@ export default class App extends Component { startNotLogged(); } else if (root === 'inside') { startLogged(); + } else if (root === 'setUsername') { + startSetUsername(); } } } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 92c427885..5cee9833d 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -11,7 +11,7 @@ import log from '../utils/log'; // import * as actions from '../actions'; import { - setUser, setLoginServices, removeLoginServices, loginRequest, loginSuccess, loginFailure, logout + setUser, setLoginServices, loginRequest, loginSuccess, loginFailure, logout } from '../actions/login'; import { disconnect, connectSuccess } from '../actions/connect'; import { setActiveUser } from '../actions/activeUsers'; @@ -125,18 +125,34 @@ const RocketChat = { } }, async loginSuccess(user) { - try { - if (!user) { - const { user: u } = reduxStore.getState().login; - user = Object.assign({}, u); - } + if (!user) { + const { user: u } = reduxStore.getState().login; + user = Object.assign({}, u); + } - // TODO: one api call - // call /me only one time + // TODO: one api call + // call /me only one time + try { if (!user.username) { - const me = await SDK.api.get('me'); + // get me from api + let me = await SDK.api.get('me'); + // if server didn't found username + if (!me.username) { + // search username from credentials (sent during registerSubmit) + const { username } = reduxStore.getState().login.credentials; + if (username) { + // set username + await RocketChat.setUsername({ username }); + me = { ...me, username }; + } + } user = { ...user, ...me }; } + } catch (e) { + log('SDK.loginSuccess set username', e); + } + + try { if (user.username) { const userInfo = await SDK.api.get('users.info', { userId: user.id }); user = { ...user, ...userInfo.user }; @@ -362,28 +378,6 @@ const RocketChat = { } })); - SDK.driver.on('meteor_accounts_loginServiceConfiguration', (error, ddpMessage) => { - if (ddpMessage.msg === 'added') { - this.loginServices = this.loginServices || {}; - if (this.loginServiceTimer) { - clearTimeout(this.loginServiceTimer); - this.loginServiceTimer = null; - } - this.loginServiceTimer = setTimeout(() => { - reduxStore.dispatch(setLoginServices(this.loginServices)); - this.loginServiceTimer = null; - return this.loginServices = {}; - }, 1000); - this.loginServices[ddpMessage.fields.service] = { ...ddpMessage.fields }; - delete this.loginServices[ddpMessage.fields.service].service; - } else if (ddpMessage.msg === 'removed') { - if (this.loginServiceTimer) { - clearTimeout(this.loginServiceTimer); - } - this.loginServiceTimer = setTimeout(() => reduxStore.dispatch(removeLoginServices()), 1000); - } - }); - SDK.driver.on('rocketchat_roles', protectedFunction((error, ddpMessage) => { this.roles = this.roles || {}; @@ -432,8 +426,8 @@ const RocketChat = { return call('registerUser', credentials); }, - setUsername({ credentials }) { - return call('setUsername', credentials.username); + setUsername({ username }) { + return call('setUsername', username); }, forgotPassword(email) { @@ -622,7 +616,7 @@ const RocketChat = { return setting; }); }, - _filterSettings: settings => settings.filter(setting => defaultSettings[setting._id] && setting.value), + _filterSettings: settings => settings.filter(setting => defaultSettings[setting._id] && (setting.value || setting.valueAsString || setting.valueAsNumber || setting.valueAsBoolean)), parseEmojis: emojis => emojis.reduce((ret, item) => { ret[item.name] = item.extension; item.aliases.forEach((alias) => { @@ -805,6 +799,30 @@ const RocketChat = { } catch (error) { console.warn(error); } + }, + async getLoginServices(server) { + try { + let loginServicesFilter = []; + const loginServicesResult = await fetch(`${ server }/api/v1/settings.oauth`).then(response => response.json()); + // TODO: remove this after SAML and custom oauth + const availableOAuth = ['facebook', 'github', 'gitlab', 'google', 'linkedin', 'meteor-developer', 'twitter']; + if (loginServicesResult.success && loginServicesResult.services.length > 0) { + const { services } = loginServicesResult; + loginServicesFilter = services.filter(item => availableOAuth.includes(item.name)); + const loginServicesReducer = loginServicesFilter.reduce((ret, item) => { + ret[item.name] = item; + return ret; + }, {}); + reduxStore.dispatch(setLoginServices(loginServicesReducer)); + } + return Promise.resolve(loginServicesFilter.length); + } catch (error) { + console.warn(error); + return Promise.reject(); + } + }, + getUsernameSuggestion() { + return SDK.driver.asyncCall('getUsernameSuggestion'); } }; diff --git a/app/presentation/RoomItem.js b/app/presentation/RoomItem.js index 3e39558fd..6c16105bf 100644 --- a/app/presentation/RoomItem.js +++ b/app/presentation/RoomItem.js @@ -215,7 +215,7 @@ export default class RoomItem extends React.Component { if (type === 'd') { return <Status style={[styles.status]} id={id} />; } - return <RoomTypeIcon type={type} />; + return <RoomTypeIcon type={type} size={12} />; } formatDate = date => moment(date).calendar(null, { diff --git a/app/reducers/login.js b/app/reducers/login.js index cf4d2ff73..ef222d06c 100644 --- a/app/reducers/login.js +++ b/app/reducers/login.js @@ -3,11 +3,11 @@ import * as types from '../actions/actionsTypes'; const initialState = { isAuthenticated: false, isFetching: false, - isRegistering: false, token: '', user: {}, error: '', - services: {} + services: {}, + credentials: {} }; export default function login(state = initialState, action) { @@ -19,7 +19,6 @@ export default function login(state = initialState, action) { ...state, isFetching: true, isAuthenticated: false, - isRegistering: false, failure: false, error: '' }; @@ -34,7 +33,8 @@ export default function login(state = initialState, action) { }, token: action.user.token, failure: false, - error: '' + error: '', + credentials: {} }; case types.LOGIN.FAILURE: return { @@ -61,37 +61,29 @@ export default function login(state = initialState, action) { return { ...state, isFetching: true, - isAuthenticated: false, - isRegistering: true, failure: false, - error: '' + error: '', + credentials: action.credentials }; case types.LOGIN.REGISTER_SUCCESS: return { ...state, isFetching: false, - isAuthenticated: false, failure: false, - error: '' + error: '', + credentials: {} }; case types.LOGIN.SET_USERNAME_SUBMIT: return { ...state, - isFetching: true + isFetching: true, + credentials: action.credentials }; case types.LOGIN.SET_USERNAME_SUCCESS: return { ...state, - isFetching: false, - isRegistering: false - }; - case types.LOGIN.REGISTER_INCOMPLETE: - return { - ...state, - isRegistering: true + isFetching: false }; - case types.FORGOT_PASSWORD.INIT: - return initialState; case types.FORGOT_PASSWORD.REQUEST: return { ...state, @@ -128,11 +120,6 @@ export default function login(state = initialState, action) { ...action.data } }; - case types.LOGIN.REMOVE_SERVICES: - return { - ...state, - services: {} - }; case types.LOGIN.SET_PREFERENCE: return { ...state, diff --git a/app/sagas/login.js b/app/sagas/login.js index b10111581..b5981cf3b 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -1,7 +1,7 @@ import { AsyncStorage } from 'react-native'; import { delay } from 'redux-saga'; import { - put, call, take, takeLatest, select, all + put, call, takeLatest, select, all } from 'redux-saga/effects'; import { Navigation } from 'react-native-navigation'; @@ -9,15 +9,8 @@ import * as types from '../actions/actionsTypes'; import { appStart } from '../actions'; import { serverFinishAdd } from '../actions/server'; import { - // loginRequest, - // loginSubmit, registerRequest, - registerIncomplete, - // loginSuccess, loginFailure, - // logout, - // setToken, - registerSuccess, setUsernameRequest, setUsernameSuccess, forgotPasswordSuccess, @@ -29,7 +22,6 @@ import I18n from '../i18n'; const getUser = state => state.login.user; const getServer = state => state.server.server; -const getIsConnected = state => state.meteor.connected; const loginCall = args => RocketChat.loginWithPassword(args); const registerCall = args => RocketChat.register(args); @@ -43,16 +35,16 @@ const handleLoginSuccess = function* handleLoginSuccess() { const user = yield select(getUser); const adding = yield select(state => state.server.adding); yield AsyncStorage.setItem(RocketChat.TOKEN_KEY, user.token); - if (!user.username || user.isRegistering) { - yield put(registerIncomplete()); + + if (!user.username) { + return yield put(appStart('setUsername')); + } + + if (adding) { + yield put(serverFinishAdd()); + yield Navigation.dismissAllModals(); } else { - yield delay(300); - if (adding) { - yield put(serverFinishAdd()); - yield Navigation.dismissAllModals(); - } else { - yield put(appStart('inside')); - } + yield put(appStart('inside')); } } catch (e) { log('handleLoginSuccess', e); @@ -66,14 +58,6 @@ const handleRegisterSubmit = function* handleRegisterSubmit({ credentials }) { const handleRegisterRequest = function* handleRegisterRequest({ credentials }) { try { yield call(registerCall, { credentials }); - yield put(registerSuccess(credentials)); - } catch (err) { - yield put(loginFailure(err)); - } -}; - -const handleRegisterSuccess = function* handleRegisterSuccess({ credentials }) { - try { yield call(loginCall, { username: credentials.email, password: credentials.pass @@ -89,7 +73,7 @@ const handleSetUsernameSubmit = function* handleSetUsernameSubmit({ credentials const handleSetUsernameRequest = function* handleSetUsernameRequest({ credentials }) { try { - yield call(setUsernameCall, { credentials }); + yield call(setUsernameCall, credentials); yield put(setUsernameSuccess()); yield call(loginSuccessCall); } catch (err) { @@ -109,13 +93,6 @@ const handleLogout = function* handleLogout() { } }; -const handleRegisterIncomplete = function* handleRegisterIncomplete() { - const server = yield select(state => state.server); - if (!server.adding) { - yield put(appStart('outside')); - } -}; - const handleForgotPasswordRequest = function* handleForgotPasswordRequest({ email }) { try { yield call(forgotPasswordCall, email); @@ -125,22 +102,6 @@ const handleForgotPasswordRequest = function* handleForgotPasswordRequest({ emai } }; -const watchLoginOpen = function* watchLoginOpen() { - try { - const isConnected = yield select(getIsConnected); - if (!isConnected) { - yield take(types.METEOR.SUCCESS); - } - const sub = yield RocketChat.subscribe('meteor.loginServiceConfiguration'); - yield take(types.LOGIN.CLOSE); - if (sub) { - yield sub.unsubscribe().catch(err => console.warn(err)); - } - } catch (e) { - log('watchLoginOpen', e); - } -}; - const handleSetUser = function* handleSetUser() { yield delay(2000); const [server, user] = yield all([select(getServer), select(getUser)]); @@ -155,19 +116,13 @@ const handleSetUser = function* handleSetUser() { }; const root = function* root() { - // yield takeLatest(types.METEOR.SUCCESS, handleLoginWhenServerChanges); - // yield takeLatest(types.LOGIN.REQUEST, handleLoginRequest); yield takeLatest(types.LOGIN.SUCCESS, handleLoginSuccess); - // yield takeLatest(types.LOGIN.SUBMIT, handleLoginSubmit); yield takeLatest(types.LOGIN.REGISTER_REQUEST, handleRegisterRequest); yield takeLatest(types.LOGIN.REGISTER_SUBMIT, handleRegisterSubmit); - yield takeLatest(types.LOGIN.REGISTER_SUCCESS, handleRegisterSuccess); - yield takeLatest(types.LOGIN.REGISTER_INCOMPLETE, handleRegisterIncomplete); yield takeLatest(types.LOGIN.SET_USERNAME_SUBMIT, handleSetUsernameSubmit); yield takeLatest(types.LOGIN.SET_USERNAME_REQUEST, handleSetUsernameRequest); yield takeLatest(types.LOGOUT, handleLogout); yield takeLatest(types.FORGOT_PASSWORD.REQUEST, handleForgotPasswordRequest); - yield takeLatest(types.LOGIN.OPEN, watchLoginOpen); yield takeLatest(types.USER.SET, handleSetUser); }; export default root; diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index dadc11ddd..9a3d50b4e 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -2,6 +2,7 @@ import { put, call, takeLatest } from 'redux-saga/effects'; import { AsyncStorage } from 'react-native'; import { Navigation } from 'react-native-navigation'; import { Provider } from 'react-redux'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import { SERVER } from '../actions/actionsTypes'; import * as actions from '../actions'; @@ -14,10 +15,7 @@ import log from '../utils/log'; import store from '../lib/createStore'; let LoginSignupView = null; - -const validate = function* validate(server) { - return yield RocketChat.testServer(server); -}; +let LoginView = null; const handleSelectServer = function* handleSelectServer({ server }) { try { @@ -29,7 +27,7 @@ const handleSelectServer = function* handleSelectServer({ server }) { } const settings = database.objects('settings'); - yield put(actions.setAllSettings(RocketChat.parseSettings(settings.slice(0, settings.length)))); + yield put(actions.setAllSettings(RocketChat.parseSettings(RocketChat._filterSettings(settings.slice(0, settings.length))))); const emojis = database.objects('customEmojis'); yield put(actions.setCustomEmojis(RocketChat.parseEmojis(emojis.slice(0, emojis.length)))); const roles = database.objects('roles'); @@ -47,24 +45,29 @@ const handleSelectServer = function* handleSelectServer({ server }) { const handleServerRequest = function* handleServerRequest({ server }) { try { - if (LoginSignupView == null) { - LoginSignupView = require('../views/LoginSignupView').default; - Navigation.registerComponentWithRedux('LoginSignupView', () => LoginSignupView, Provider, store); - } - - yield call(validate, server); - yield Navigation.push('NewServerView', { - component: { - name: 'LoginSignupView', - options: { - topBar: { - title: { - text: server - } - } + yield RocketChat.testServer(server); + const loginServicesLength = yield RocketChat.getLoginServices(server); + if (loginServicesLength === 0) { + if (LoginView == null) { + LoginView = require('../views/LoginView').default; + Navigation.registerComponentWithRedux('LoginView', () => gestureHandlerRootHOC(LoginView), Provider, store); + } + yield Navigation.push('NewServerView', { + component: { + name: 'LoginView' } + }); + } else { + if (LoginSignupView == null) { + LoginSignupView = require('../views/LoginSignupView').default; + Navigation.registerComponentWithRedux('LoginSignupView', () => gestureHandlerRootHOC(LoginSignupView), Provider, store); } - }); + yield Navigation.push('NewServerView', { + component: { + name: 'LoginSignupView' + } + }); + } database.databases.serversDB.write(() => { database.databases.serversDB.create('servers', { id: server }, true); diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index be205630a..193c1327f 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -17,6 +17,7 @@ import scrollPersistTaps from '../utils/scrollPersistTaps'; import I18n from '../i18n'; import UserItem from '../presentation/UserItem'; import { showErrorAlert } from '../utils/info'; +import { DEFAULT_HEADER } from '../constants/headerOptions'; const styles = StyleSheet.create({ container: { @@ -85,6 +86,19 @@ const styles = StyleSheet.create({ })) /** @extends React.Component */ export default class CreateChannelView extends LoggedView { + static options() { + return { + ...DEFAULT_HEADER, + topBar: { + ...DEFAULT_HEADER.topBar, + title: { + ...DEFAULT_HEADER.topBar.title, + text: I18n.t('Create_Channel') + } + } + }; + } + static propTypes = { componentId: PropTypes.string, baseUrl: PropTypes.string, @@ -109,7 +123,7 @@ export default class CreateChannelView extends LoggedView { } componentDidMount() { - setTimeout(() => { + this.timeout = setTimeout(() => { this.channelNameRef.focus(); }, 600); } @@ -140,6 +154,12 @@ export default class CreateChannelView extends LoggedView { } } + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + onChangeText = (channelName) => { const { componentId } = this.props; const rightButtons = []; diff --git a/app/views/ForgotPasswordView.js b/app/views/ForgotPasswordView.js index 1d1fc4e5f..fc5e0178c 100644 --- a/app/views/ForgotPasswordView.js +++ b/app/views/ForgotPasswordView.js @@ -1,32 +1,36 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Text, View, ScrollView } from 'react-native'; +import { Text, ScrollView } from 'react-native'; import { connect } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; import LoggedView from './View'; -import { forgotPasswordInit as forgotPasswordInitAction, forgotPasswordRequest as forgotPasswordRequestAction } from '../actions/login'; +import { forgotPasswordRequest as forgotPasswordRequestAction } from '../actions/login'; import KeyboardView from '../presentation/KeyboardView'; import TextInput from '../containers/TextInput'; import Button from '../containers/Button'; -import Loading from '../containers/Loading'; -import styles from './Styles'; +import sharedStyles from './Styles'; import { showErrorAlert } from '../utils/info'; import scrollPersistTaps from '../utils/scrollPersistTaps'; import I18n from '../i18n'; +import { DARK_HEADER } from '../constants/headerOptions'; @connect(state => ({ login: state.login }), dispatch => ({ - forgotPasswordInit: () => dispatch(forgotPasswordInitAction()), forgotPasswordRequest: email => dispatch(forgotPasswordRequestAction(email)) })) /** @extends React.Component */ export default class ForgotPasswordView extends LoggedView { + static options() { + return { + ...DARK_HEADER + }; + } + static propTypes = { componentId: PropTypes.string, - forgotPasswordInit: PropTypes.func.isRequired, forgotPasswordRequest: PropTypes.func.isRequired, login: PropTypes.object } @@ -36,13 +40,14 @@ export default class ForgotPasswordView extends LoggedView { this.state = { email: '', - invalidEmail: false + invalidEmail: true }; } componentDidMount() { - const { forgotPasswordInit } = this.props; - forgotPasswordInit(); + this.timeout = setTimeout(() => { + this.emailInput.focus(); + }, 600); } componentDidUpdate() { @@ -55,6 +60,12 @@ export default class ForgotPasswordView extends LoggedView { } } + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + validate = (email) => { /* eslint-disable no-useless-escape */ const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; @@ -80,35 +91,31 @@ export default class ForgotPasswordView extends LoggedView { return ( <KeyboardView - contentContainerStyle={styles.container} + contentContainerStyle={sharedStyles.container} keyboardVerticalOffset={128} > - <ScrollView {...scrollPersistTaps} contentContainerStyle={styles.containerScrollView}> - <SafeAreaView style={styles.container} testID='forgot-password-view' forceInset={{ bottom: 'never' }}> - <View> - <TextInput - inputStyle={invalidEmail ? { borderColor: 'red' } : {}} - label={I18n.t('Email')} - placeholder={I18n.t('Email')} - keyboardType='email-address' - returnKeyType='next' - onChangeText={email => this.validate(email)} - onSubmitEditing={() => this.resetPassword()} - testID='forgot-password-view-email' - /> - - <View style={styles.alignItemsFlexStart}> - <Button - title={I18n.t('Reset_password')} - type='primary' - onPress={this.resetPassword} - testID='forgot-password-view-submit' - /> - </View> - - {login.failure ? <Text style={styles.error}>{login.error.reason}</Text> : null} - <Loading visible={login.isFetching} /> - </View> + <ScrollView {...scrollPersistTaps} contentContainerStyle={sharedStyles.containerScrollView}> + <SafeAreaView style={sharedStyles.container} testID='forgot-password-view' forceInset={{ bottom: 'never' }}> + <Text style={[sharedStyles.loginTitle, sharedStyles.textBold]}>{I18n.t('Forgot_password')}</Text> + <TextInput + inputRef={(e) => { this.emailInput = e; }} + placeholder={I18n.t('Email')} + keyboardType='email-address' + iconLeft='mail' + returnKeyType='send' + onChangeText={email => this.validate(email)} + onSubmitEditing={this.resetPassword} + testID='forgot-password-view-email' + containerStyle={sharedStyles.inputLastChild} + /> + <Button + title={I18n.t('Reset_password')} + type='primary' + onPress={this.resetPassword} + testID='forgot-password-view-submit' + loading={login.isFetching} + disabled={invalidEmail} + /> </SafeAreaView> </ScrollView> </KeyboardView> diff --git a/app/views/LegalView.js b/app/views/LegalView.js new file mode 100644 index 000000000..da6c889f8 --- /dev/null +++ b/app/views/LegalView.js @@ -0,0 +1,135 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + Text, ScrollView, View, StyleSheet, Image, Platform, Dimensions +} from 'react-native'; +import { Provider } from 'react-redux'; +import { Navigation } from 'react-native-navigation'; +import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC, RectButton } from 'react-native-gesture-handler'; + +import sharedStyles from './Styles'; +import scrollPersistTaps from '../utils/scrollPersistTaps'; +import LoggedView from './View'; +import I18n from '../i18n'; +import store from '../lib/createStore'; +import { DARK_HEADER } from '../constants/headerOptions'; + +let TermsServiceView = null; +let PrivacyPolicyView = null; + +const styles = StyleSheet.create({ + container: { + backgroundColor: '#f7f8fa', + flex: 1 + }, + scroll: { + marginTop: 35, + backgroundColor: '#fff', + borderColor: '#cbced1', + borderTopWidth: StyleSheet.hairlineWidth, + borderBottomWidth: StyleSheet.hairlineWidth + }, + separator: { + backgroundColor: '#cbced1', + height: StyleSheet.hairlineWidth, + width: '100%', + marginLeft: 20 + }, + item: { + width: '100%', + height: 48, + backgroundColor: '#fff', + paddingLeft: 20, + paddingRight: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between' + }, + text: { + ...sharedStyles.textMedium, + color: '#0c0d0f', + fontSize: 18 + }, + disclosureIndicator: { + width: 20, + height: 20 + } +}); + +const Separator = () => <View style={styles.separator} />; + +/** @extends React.Component */ +export default class LegalView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + title: { + ...DARK_HEADER.topBar.title, + text: I18n.t('Legal') + }, + leftButtons: [{ + id: 'close', + icon: Platform.OS === 'android' ? { uri: 'back', scale: Dimensions.get('window').scale } : undefined, + text: Platform.OS === 'ios' ? I18n.t('Close') : undefined, + testID: 'legal-view-close' + }] + } + }; + } + + static propTypes = { + componentId: PropTypes.string + } + + constructor(props) { + super('LegalView', props); + Navigation.events().bindComponent(this); + } + + navigationButtonPressed = ({ buttonId }) => { + if (buttonId === 'close') { + const { componentId } = this.props; + Navigation.dismissModal(componentId); + } + } + + onPressItem = ({ route }) => { + if (route === 'TermsServiceView' && TermsServiceView == null) { + TermsServiceView = require('./TermsServiceView').default; + Navigation.registerComponentWithRedux('TermsServiceView', () => gestureHandlerRootHOC(TermsServiceView), Provider, store); + } + if (route === 'PrivacyPolicyView' && PrivacyPolicyView == null) { + PrivacyPolicyView = require('./PrivacyPolicyView').default; + Navigation.registerComponentWithRedux('PrivacyPolicyView', () => gestureHandlerRootHOC(PrivacyPolicyView), Provider, store); + } + + const { componentId } = this.props; + Navigation.push(componentId, { + component: { + name: route + } + }); + } + + renderItem = ({ text, route, testID }) => ( + <RectButton style={styles.item} onPress={() => this.onPressItem({ route })} testID={testID}> + <Text style={styles.text}>{I18n.t(text)}</Text> + <Image source={{ uri: 'disclosure_indicator' }} style={styles.disclosureIndicator} /> + </RectButton> + ) + + render() { + return ( + <SafeAreaView style={styles.container} testID='legal-view' forceInset={{ bottom: 'never' }}> + <ScrollView {...scrollPersistTaps} contentContainerStyle={styles.scroll}> + {this.renderItem({ text: 'Terms_of_Service', route: 'TermsServiceView', testID: 'legal-terms-button' })} + <Separator /> + {this.renderItem({ text: 'Privacy_Policy', route: 'PrivacyPolicyView', testID: 'legal-privacy-button' })} + </ScrollView> + </SafeAreaView> + ); + } +} diff --git a/app/views/LoginSignupView.js b/app/views/LoginSignupView.js index 626503d2c..92f1dfc15 100644 --- a/app/views/LoginSignupView.js +++ b/app/views/LoginSignupView.js @@ -1,80 +1,123 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - Text, View, ScrollView, TouchableOpacity, LayoutAnimation, Image, StyleSheet + Text, View, ScrollView, Image, StyleSheet, Dimensions, Animated, Easing } from 'react-native'; import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; -import Icon from 'react-native-vector-icons/FontAwesome'; -import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; import { Base64 } from 'js-base64'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC, RectButton, BorderlessButton } from 'react-native-gesture-handler'; -import { open as openAction, close as closeAction } from '../actions/login'; import LoggedView from './View'; import sharedStyles from './Styles'; import scrollPersistTaps from '../utils/scrollPersistTaps'; import random from '../utils/random'; import Button from '../containers/Button'; -import Loading from '../containers/Loading'; import I18n from '../i18n'; import store from '../lib/createStore'; +import { DARK_HEADER } from '../constants/headerOptions'; const styles = StyleSheet.create({ container: { - alignItems: 'center', - justifyContent: 'center' + paddingVertical: 30 }, - header: { - fontSize: 20 + safeArea: { + paddingBottom: 30 }, - servicesContainer: { - backgroundColor: '#F7F8FA', - width: '100%', + serviceButton: { + borderRadius: 2, + marginBottom: 10 + }, + serviceButtonContainer: { borderRadius: 2, - padding: 16, - paddingTop: 20, - marginBottom: 40 + borderWidth: 1, + borderColor: '#e1e5e8', + width: '100%', + height: 48, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + paddingHorizontal: 15 + }, + serviceIcon: { + position: 'absolute', + left: 15, + top: 12, + width: 24, + height: 24 + }, + serviceText: { + ...sharedStyles.textRegular, + fontSize: 16, + color: '#2f343d' }, - servicesTitle: { - color: '#292E35', - textAlign: 'left', - fontWeight: '700' + serviceName: { + ...sharedStyles.textBold }, - planetImage: { - width: 210, - height: 171, - marginVertical: 20 + servicesTogglerContainer: { + flexDirection: 'row', + alignItems: 'center', + marginTop: 5, + marginBottom: 30 + }, + servicesToggler: { + width: 32, + height: 31 + }, + separatorContainer: { + marginTop: 5, + marginBottom: 15 + }, + separatorLine: { + flex: 1, + height: 1, + backgroundColor: '#e1e5e8' + }, + separatorLineLeft: { + marginRight: 15 + }, + separatorLineRight: { + marginLeft: 15 + }, + inverted: { + transform: [{ scaleY: -1 }] } }); let OAuthView = null; let LoginView = null; let RegisterView = null; +let LegalView = null; +const SERVICE_HEIGHT = 58; +const SERVICES_COLLAPSED_HEIGHT = 174; @connect(state => ({ server: state.server.server, isFetching: state.login.isFetching, Accounts_EmailOrUsernamePlaceholder: state.settings.Accounts_EmailOrUsernamePlaceholder, Accounts_PasswordPlaceholder: state.settings.Accounts_PasswordPlaceholder, - Accounts_OAuth_Facebook: state.settings.Accounts_OAuth_Facebook, - Accounts_OAuth_Github: state.settings.Accounts_OAuth_Github, - Accounts_OAuth_Gitlab: state.settings.Accounts_OAuth_Gitlab, - Accounts_OAuth_Google: state.settings.Accounts_OAuth_Google, - Accounts_OAuth_Linkedin: state.settings.Accounts_OAuth_Linkedin, - Accounts_OAuth_Meteor: state.settings.Accounts_OAuth_Meteor, - Accounts_OAuth_Twitter: state.settings.Accounts_OAuth_Twitter, + Site_Name: state.settings.Site_Name, services: state.login.services -}), dispatch => ({ - open: () => dispatch(openAction()), - close: () => dispatch(closeAction()) })) /** @extends React.Component */ export default class LoginSignupView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + rightButtons: [{ + id: 'more', + icon: { uri: 'more', scale: Dimensions.get('window').scale }, + testID: 'welcome-view-more' + }] + } + }; + } + static propTypes = { componentId: PropTypes.string, - open: PropTypes.func.isRequired, - close: PropTypes.func.isRequired, isFetching: PropTypes.bool, server: PropTypes.string, Accounts_EmailOrUsernamePlaceholder: PropTypes.bool, @@ -91,33 +134,59 @@ export default class LoginSignupView extends LoggedView { constructor(props) { super('LoginSignupView', props); + this.state = { + collapsed: true, + servicesHeight: new Animated.Value(SERVICES_COLLAPSED_HEIGHT) + }; + Navigation.events().bindComponent(this); + const { componentId, Site_Name } = this.props; + this.setTitle(componentId, Site_Name); } - componentDidMount() { - const { open } = this.props; - open(); + componentDidUpdate(prevProps) { + const { componentId, Site_Name } = this.props; + if (Site_Name && prevProps.Site_Name !== Site_Name) { + this.setTitle(componentId, Site_Name); + } } - componentWillReceiveProps(nextProps) { - const { services } = this.props; - if (services !== nextProps.services) { - LayoutAnimation.easeInEaseOut(); - } + setTitle = (componentId, title) => { + Navigation.mergeOptions(componentId, { + topBar: { + title: { + text: title + } + } + }); } - componentWillUnmount() { - const { close } = this.props; - close(); + navigationButtonPressed = ({ buttonId }) => { + if (buttonId === 'more') { + if (LegalView == null) { + LegalView = require('./LegalView').default; + Navigation.registerComponentWithRedux('LegalView', () => gestureHandlerRootHOC(LegalView), Provider, store); + } + + Navigation.showModal({ + stack: { + children: [{ + component: { + name: 'LegalView' + } + }] + } + }); + } } onPressFacebook = () => { const { services, server } = this.props; - const { appId } = services.facebook; + const { clientId } = services.facebook; const endpoint = 'https://m.facebook.com/v2.9/dialog/oauth'; const redirect_uri = `${ server }/_oauth/facebook?close`; const scope = 'email'; const state = this.getOAuthState(); - const params = `?client_id=${ appId }&redirect_uri=${ redirect_uri }&scope=${ scope }&state=${ state }&display=touch`; + const params = `?client_id=${ clientId }&redirect_uri=${ redirect_uri }&scope=${ scope }&state=${ state }&display=touch`; this.openOAuth(`${ endpoint }${ params }`); } @@ -190,7 +259,7 @@ export default class LoginSignupView extends LoggedView { openOAuth = (oAuthUrl) => { if (OAuthView == null) { OAuthView = require('./OAuthView').default; - Navigation.registerComponentWithRedux('OAuthView', () => OAuthView, Provider, store); + Navigation.registerComponentWithRedux('OAuthView', () => gestureHandlerRootHOC(OAuthView), Provider, store); } Navigation.showModal({ @@ -217,17 +286,17 @@ export default class LoginSignupView extends LoggedView { login = () => { if (LoginView == null) { LoginView = require('./LoginView').default; - Navigation.registerComponentWithRedux('LoginView', () => LoginView, Provider, store); + Navigation.registerComponentWithRedux('LoginView', () => gestureHandlerRootHOC(LoginView), Provider, store); } - const { componentId, server } = this.props; + const { componentId, Site_Name } = this.props; Navigation.push(componentId, { component: { name: 'LoginView', options: { topBar: { title: { - text: server + text: Site_Name } } } @@ -238,17 +307,17 @@ export default class LoginSignupView extends LoggedView { register = () => { if (RegisterView == null) { RegisterView = require('./RegisterView').default; - Navigation.registerComponentWithRedux('RegisterView', () => RegisterView, Provider, store); + Navigation.registerComponentWithRedux('RegisterView', () => gestureHandlerRootHOC(RegisterView), Provider, store); } - const { componentId, server } = this.props; + const { componentId, Site_Name } = this.props; Navigation.push(componentId, { component: { name: 'RegisterView', options: { topBar: { title: { - text: server + text: Site_Name } } } @@ -256,131 +325,138 @@ export default class LoginSignupView extends LoggedView { }); } - renderServices = () => { - const { - services, Accounts_OAuth_Facebook, Accounts_OAuth_Github, Accounts_OAuth_Gitlab, Accounts_OAuth_Google, Accounts_OAuth_Linkedin, Accounts_OAuth_Meteor, Accounts_OAuth_Twitter - } = this.props; + transitionServicesTo = (height) => { + const { servicesHeight } = this.state; + if (this._animation) { + this._animation.stop(); + } + this._animation = Animated.timing(servicesHeight, { + toValue: height, + duration: 300, + easing: Easing.easeOutCubic + }).start(); + } - if (!Object.keys(services).length) { - return null; + toggleServices = () => { + const { collapsed } = this.state; + const { services } = this.props; + const { length } = Object.values(services); + if (collapsed) { + this.transitionServicesTo(SERVICE_HEIGHT * length); + } else { + this.transitionServicesTo(SERVICES_COLLAPSED_HEIGHT); } + this.setState(prevState => ({ collapsed: !prevState.collapsed })); + } + renderServicesSeparator = () => { + const { collapsed } = this.state; + const { services } = this.props; + const { length } = Object.values(services); + + if (length > 3) { + return ( + <View style={styles.servicesTogglerContainer}> + <View style={[styles.separatorLine, styles.separatorLineLeft]} /> + <BorderlessButton onPress={this.toggleServices}> + <Image source={{ uri: 'options' }} style={[styles.servicesToggler, !collapsed && styles.inverted]} /> + </BorderlessButton> + <View style={[styles.separatorLine, styles.separatorLineRight]} /> + </View> + ); + } return ( - <View style={styles.servicesContainer}> - <Text style={styles.servicesTitle}> - {I18n.t('Or_continue_using_social_accounts')} - </Text> - <View style={sharedStyles.loginOAuthButtons} key='services'> - {Accounts_OAuth_Facebook && services.facebook - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.facebookButton]} - onPress={this.onPressFacebook} - > - <Icon name='facebook' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Github && services.github - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.githubButton]} - onPress={this.onPressGithub} - > - <Icon name='github' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Gitlab && services.gitlab - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.gitlabButton]} - onPress={this.onPressGitlab} - > - <Icon name='gitlab' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Google && services.google - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.googleButton]} - onPress={this.onPressGoogle} - > - <Icon name='google' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Linkedin && services.linkedin - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.linkedinButton]} - onPress={this.onPressLinkedin} - > - <Icon name='linkedin' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Meteor && services['meteor-developer'] - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.meteorButton]} - onPress={this.onPressMeteor} - > - <MaterialCommunityIcons name='meteor' size={25} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } - {Accounts_OAuth_Twitter && services.twitter - ? ( - <TouchableOpacity - style={[sharedStyles.oauthButton, sharedStyles.twitterButton]} - onPress={this.onPressTwitter} - > - <Icon name='twitter' size={20} color='#ffffff' /> - </TouchableOpacity> - ) - : null - } + <View style={styles.separatorContainer}> + <View style={styles.separatorLine} /> + </View> + ); + } + + renderItem = (service) => { + let { name } = service; + name = name === 'meteor-developer' ? 'meteor' : name; + const icon = `icon_${ name }`; + name = name.charAt(0).toUpperCase() + name.slice(1); + let onPress = () => {}; + switch (service.name) { + case 'facebook': + onPress = this.onPressFacebook; + break; + case 'github': + onPress = this.onPressGithub; + break; + case 'gitlab': + onPress = this.onPressGitlab; + break; + case 'google': + onPress = this.onPressGoogle; + break; + case 'linkedin': + onPress = this.onPressLinkedin; + break; + case 'meteor-developer': + onPress = this.onPressMeteor; + break; + case 'twitter': + onPress = this.onPressTwitter; + break; + default: + break; + } + return ( + <RectButton key={service.name} onPress={onPress} style={styles.serviceButton}> + <View style={styles.serviceButtonContainer}> + <Image source={{ uri: icon }} style={styles.serviceIcon} /> + <Text style={styles.serviceText}> + {I18n.t('Continue_with')} <Text style={styles.serviceName}>{name}</Text> + </Text> </View> + </RectButton> + ); + } + + renderServices = () => { + const { servicesHeight } = this.state; + const { services } = this.props; + const { length } = Object.values(services); + const style = { + overflow: 'hidden', + height: servicesHeight + }; + + + if (length > 3) { + return ( + <Animated.View style={style}> + {Object.values(services).map(service => this.renderItem(service))} + </Animated.View> + ); + } + return ( + <View> + {Object.values(services).map(service => this.renderItem(service))} </View> ); } render() { - const { isFetching } = this.props; - return ( - <ScrollView - style={[sharedStyles.container, sharedStyles.containerScrollView]} - {...scrollPersistTaps} - > - <SafeAreaView style={sharedStyles.container} testID='welcome-view' forceInset={{ bottom: 'never' }}> - <View style={styles.container}> - <Text style={[sharedStyles.loginText, styles.header, { color: '#81848A' }]}>{I18n.t('Welcome_title_pt_1')}</Text> - <Text style={[sharedStyles.loginText, styles.header]}>{I18n.t('Welcome_title_pt_2')}</Text> - <Image style={styles.planetImage} source={{ uri: 'new_server' }} /> - <Button - title={I18n.t('I_have_an_account')} - type='primary' - onPress={() => this.login()} - testID='welcome-view-login' - /> - <Button - title={I18n.t('Create_account')} - type='secondary' - onPress={() => this.register()} - testID='welcome-view-register' - /> - {this.renderServices()} - </View> - <Loading visible={isFetching} /> + <ScrollView style={[sharedStyles.containerScrollView, sharedStyles.container, styles.container]} {...scrollPersistTaps}> + <SafeAreaView testID='welcome-view' forceInset={{ bottom: 'never' }} style={styles.safeArea}> + {this.renderServices()} + {this.renderServicesSeparator()} + <Button + title={<Text>{I18n.t('Login_with')} <Text style={{ ...sharedStyles.textBold }}>{I18n.t('email')}</Text></Text>} + type='primary' + onPress={() => this.login()} + testID='welcome-view-login' + /> + <Button + title={I18n.t('Create_account')} + type='secondary' + onPress={() => this.register()} + testID='welcome-view-register' + /> </SafeAreaView> </ScrollView> ); diff --git a/app/views/LoginView.js b/app/views/LoginView.js index cf8df7af6..013e95711 100644 --- a/app/views/LoginView.js +++ b/app/views/LoginView.js @@ -1,93 +1,201 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - Keyboard, Text, ScrollView, View + Keyboard, Text, ScrollView, View, StyleSheet, Alert, LayoutAnimation, Dimensions } from 'react-native'; import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import { Answers } from 'react-native-fabric'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import RocketChat from '../lib/rocketchat'; import KeyboardView from '../presentation/KeyboardView'; import TextInput from '../containers/TextInput'; import Button from '../containers/Button'; -import Loading from '../containers/Loading'; -import styles from './Styles'; +import sharedStyles from './Styles'; import scrollPersistTaps from '../utils/scrollPersistTaps'; -import { showToast } from '../utils/info'; -import { COLOR_BUTTON_PRIMARY } from '../constants/colors'; import LoggedView from './View'; import I18n from '../i18n'; import store from '../lib/createStore'; +import { DARK_HEADER } from '../constants/headerOptions'; let RegisterView = null; let ForgotPasswordView = null; +let LegalView = null; + +const styles = StyleSheet.create({ + buttonsContainer: { + flexDirection: 'column', + marginTop: 5 + }, + bottomContainer: { + flexDirection: 'column', + alignItems: 'center', + marginTop: 10 + }, + dontHaveAccount: { + ...sharedStyles.textRegular, + color: '#9ea2a8', + fontSize: 13 + }, + createAccount: { + ...sharedStyles.textSemibold, + color: '#1d74f5', + fontSize: 13 + }, + loginTitle: { + marginVertical: 0, + marginTop: 15 + } +}); @connect(state => ({ - server: state.server.server, - failure: state.login.failure, isFetching: state.login.isFetching, - reason: state.login.error && state.login.error.reason, - error: state.login.error && state.login.error.error + Site_Name: state.settings.Site_Name, + Accounts_EmailOrUsernamePlaceholder: state.settings.Accounts_EmailOrUsernamePlaceholder, + Accounts_PasswordPlaceholder: state.settings.Accounts_PasswordPlaceholder }), () => ({ loginSubmit: params => RocketChat.loginWithPassword(params) })) /** @extends React.Component */ export default class LoginView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + rightButtons: [{ + id: 'more', + icon: { uri: 'more', scale: Dimensions.get('window').scale }, + testID: 'login-view-more' + }] + } + }; + } + static propTypes = { componentId: PropTypes.string, loginSubmit: PropTypes.func.isRequired, login: PropTypes.object, - server: PropTypes.string, - error: PropTypes.string, + Site_Name: PropTypes.string, Accounts_EmailOrUsernamePlaceholder: PropTypes.string, Accounts_PasswordPlaceholder: PropTypes.string, - failure: PropTypes.bool, - isFetching: PropTypes.bool, - reason: PropTypes.string + isFetching: PropTypes.bool } constructor(props) { super('LoginView', props); this.state = { username: '', - password: '' + password: '', + code: '', + showTOTP: false }; + Navigation.events().bindComponent(this); + const { componentId, Site_Name } = this.props; + this.setTitle(componentId, Site_Name); } - submit = async() => { - const { username, password, code } = this.state; - const { loginSubmit } = this.props; + componentDidMount() { + this.timeout = setTimeout(() => { + this.usernameInput.focus(); + }, 600); + } + + componentDidUpdate(prevProps) { + const { componentId, Site_Name } = this.props; + if (Site_Name && prevProps.Site_Name !== Site_Name) { + this.setTitle(componentId, Site_Name); + } + } + + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + + setTitle = (componentId, title) => { + Navigation.mergeOptions(componentId, { + topBar: { + title: { + text: title + } + } + }); + } + + navigationButtonPressed = ({ buttonId }) => { + if (buttonId === 'more') { + if (LegalView == null) { + LegalView = require('./LegalView').default; + Navigation.registerComponentWithRedux('LegalView', () => gestureHandlerRootHOC(LegalView), Provider, store); + } + + Navigation.showModal({ + stack: { + children: [{ + component: { + name: 'LegalView' + } + }] + } + }); + } + } - if (username.trim() === '' || password.trim() === '') { - showToast(I18n.t('Email_or_password_field_is_empty')); + valid = () => { + const { + username, password, code, showTOTP + } = this.state; + if (showTOTP) { + return code.trim(); + } + return username.trim() && password.trim(); + } + + submit = async() => { + if (!this.valid()) { return; } + + const { username, password, code } = this.state; + const { loginSubmit } = this.props; Keyboard.dismiss(); try { await loginSubmit({ username, password, code }); Answers.logLogin('Email', true); - } catch (error) { - console.warn('LoginView submit', error); + } catch (e) { + if (e && e.error === 'totp-required') { + LayoutAnimation.easeInEaseOut(); + this.setState({ showTOTP: true }); + setTimeout(() => { + if (this.codeInput && this.codeInput.focus) { + this.codeInput.focus(); + } + }, 300); + return; + } + Alert.alert(I18n.t('Oops'), I18n.t('Login_error')); } } register = () => { if (RegisterView == null) { RegisterView = require('./RegisterView').default; - Navigation.registerComponentWithRedux('RegisterView', () => RegisterView, Provider, store); + Navigation.registerComponentWithRedux('RegisterView', () => gestureHandlerRootHOC(RegisterView), Provider, store); } - const { componentId, server } = this.props; + const { componentId, Site_Name } = this.props; Navigation.push(componentId, { component: { name: 'RegisterView', options: { topBar: { title: { - text: server + text: Site_Name } } } @@ -98,17 +206,17 @@ export default class LoginView extends LoggedView { forgotPassword = () => { if (ForgotPasswordView == null) { ForgotPasswordView = require('./ForgotPasswordView').default; - Navigation.registerComponentWithRedux('ForgotPasswordView', () => ForgotPasswordView, Provider, store); + Navigation.registerComponentWithRedux('ForgotPasswordView', () => gestureHandlerRootHOC(ForgotPasswordView), Provider, store); } - const { componentId } = this.props; + const { componentId, Site_Name } = this.props; Navigation.push(componentId, { component: { name: 'ForgotPasswordView', options: { topBar: { title: { - text: I18n.t('Forgot_Password') + text: Site_Name } } } @@ -117,89 +225,99 @@ export default class LoginView extends LoggedView { } renderTOTP = () => { - const { error } = this.props; - if (/totp/ig.test(error)) { - return ( + const { isFetching } = this.props; + return ( + <SafeAreaView style={sharedStyles.container} testID='login-view' forceInset={{ bottom: 'never' }}> + <Text style={[sharedStyles.loginTitle, sharedStyles.textBold, styles.loginTitle]}>{I18n.t('Two_Factor_Authentication')}</Text> + <Text style={[sharedStyles.loginSubtitle, sharedStyles.textRegular]}>{I18n.t('Whats_your_2fa')}</Text> <TextInput inputRef={ref => this.codeInput = ref} - label={I18n.t('Code')} - onChangeText={code => this.setState({ code })} - placeholder={I18n.t('Code')} + onChangeText={value => this.setState({ code: value })} keyboardType='numeric' - returnKeyType='done' + returnKeyType='send' autoCapitalize='none' onSubmitEditing={this.submit} + testID='login-view-totp' + containerStyle={sharedStyles.inputLastChild} /> - ); - } - return null; + <Button + title={I18n.t('Confirm')} + type='primary' + onPress={this.submit} + testID='login-view-submit' + loading={isFetching} + disabled={!this.valid()} + /> + </SafeAreaView> + ); } - render() { + renderUserForm = () => { const { - Accounts_EmailOrUsernamePlaceholder, Accounts_PasswordPlaceholder, failure, reason, isFetching + Accounts_EmailOrUsernamePlaceholder, Accounts_PasswordPlaceholder, isFetching } = this.props; + return ( + <SafeAreaView style={sharedStyles.container} testID='login-view' forceInset={{ bottom: 'never' }}> + <Text style={[sharedStyles.loginTitle, sharedStyles.textBold]}>{I18n.t('Login')}</Text> + <TextInput + inputRef={(e) => { this.usernameInput = e; }} + placeholder={Accounts_EmailOrUsernamePlaceholder || I18n.t('Username_or_email')} + keyboardType='email-address' + returnKeyType='next' + iconLeft='mention' + onChangeText={value => this.setState({ username: value })} + onSubmitEditing={() => { this.passwordInput.focus(); }} + testID='login-view-email' + /> + <TextInput + inputRef={(e) => { this.passwordInput = e; }} + placeholder={Accounts_PasswordPlaceholder || I18n.t('Password')} + returnKeyType='send' + iconLeft='key' + secureTextEntry + onSubmitEditing={this.submit} + onChangeText={value => this.setState({ password: value })} + testID='login-view-password' + containerStyle={sharedStyles.inputLastChild} + /> + <Button + title={I18n.t('Login')} + type='primary' + onPress={this.submit} + testID='login-view-submit' + loading={isFetching} + disabled={!this.valid()} + /> + <Button + title={I18n.t('Forgot_password')} + type='secondary' + onPress={this.forgotPassword} + testID='login-view-forgot-password' + /> + <View style={styles.bottomContainer}> + <Text style={styles.dontHaveAccount}>{I18n.t('Dont_Have_An_Account')}</Text> + <Text + style={styles.createAccount} + onPress={this.register} + testID='login-view-register' + >{I18n.t('Create_account')} + </Text> + </View> + </SafeAreaView> + ); + } + render() { + const { showTOTP } = this.state; return ( <KeyboardView - contentContainerStyle={styles.container} + contentContainerStyle={sharedStyles.container} keyboardVerticalOffset={128} key='login-view' > - <ScrollView {...scrollPersistTaps} contentContainerStyle={styles.containerScrollView}> - <SafeAreaView style={styles.container} testID='login-view' forceInset={{ bottom: 'never' }}> - <Text style={[styles.loginText, styles.loginTitle]}>Login</Text> - <TextInput - label={I18n.t('Username')} - placeholder={Accounts_EmailOrUsernamePlaceholder || I18n.t('Username')} - keyboardType='email-address' - returnKeyType='next' - iconLeft='at' - onChangeText={username => this.setState({ username })} - onSubmitEditing={() => { this.password.focus(); }} - testID='login-view-email' - /> - - <TextInput - inputRef={(e) => { this.password = e; }} - label={I18n.t('Password')} - placeholder={Accounts_PasswordPlaceholder || I18n.t('Password')} - returnKeyType='done' - iconLeft='key-variant' - secureTextEntry - onSubmitEditing={this.submit} - onChangeText={password => this.setState({ password })} - testID='login-view-password' - /> - - {this.renderTOTP()} - - <View style={styles.alignItemsFlexStart}> - <Button - title={I18n.t('Login')} - type='primary' - onPress={this.submit} - testID='login-view-submit' - /> - <Text - style={[styles.loginText, { marginTop: 10 }]} - testID='login-view-register' - onPress={() => this.register()} - >{I18n.t('New_in_RocketChat_question_mark')} - <Text style={{ color: COLOR_BUTTON_PRIMARY }}>{I18n.t('Sign_Up')} - </Text> - </Text> - <Text - style={[styles.loginText, { marginTop: 20, fontSize: 13 }]} - onPress={() => this.forgotPassword()} - testID='login-view-forgot-password' - >{I18n.t('Forgot_password')} - </Text> - </View> - - {failure ? <Text style={styles.error}>{reason}</Text> : null} - <Loading visible={isFetching} /> - </SafeAreaView> + <ScrollView {...scrollPersistTaps} contentContainerStyle={sharedStyles.containerScrollView}> + {!showTOTP ? this.renderUserForm() : null} + {showTOTP ? this.renderTOTP() : null} </ScrollView> </KeyboardView> ); diff --git a/app/views/MentionedMessagesView/index.js b/app/views/MentionedMessagesView/index.js index 999801fc6..ef461b23e 100644 --- a/app/views/MentionedMessagesView/index.js +++ b/app/views/MentionedMessagesView/index.js @@ -10,6 +10,7 @@ import styles from './styles'; import Message from '../../containers/message'; import RCActivityIndicator from '../../containers/ActivityIndicator'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ messages: state.mentionedMessages.messages, @@ -27,8 +28,11 @@ import I18n from '../../i18n'; export default class MentionedMessagesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Mentions') } } diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index 1204d14ad..288a1d0d2 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -6,6 +6,7 @@ import { import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import database from '../lib/realm'; import RocketChat from '../lib/rocketchat'; @@ -17,6 +18,7 @@ import I18n from '../i18n'; import Touch from '../utils/touch'; import SearchBox from '../containers/SearchBox'; import store from '../lib/createStore'; +import { DEFAULT_HEADER } from '../constants/headerOptions'; const styles = StyleSheet.create({ safeAreaView: { @@ -55,7 +57,9 @@ let SelectedUsersView = null; export default class NewMessageView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, leftButtons: [{ id: 'cancel', icon: Platform.OS === 'android' ? { uri: 'back', scale: Dimensions.get('window').scale } : undefined, @@ -124,7 +128,7 @@ export default class NewMessageView extends LoggedView { createChannel = () => { if (SelectedUsersView == null) { SelectedUsersView = require('./SelectedUsersView').default; - Navigation.registerComponentWithRedux('SelectedUsersView', () => SelectedUsersView, Provider, store); + Navigation.registerComponentWithRedux('SelectedUsersView', () => gestureHandlerRootHOC(SelectedUsersView), Provider, store); } const { componentId } = this.props; diff --git a/app/views/NewServerView.js b/app/views/NewServerView.js index f3c5c5dff..f8c0c304c 100644 --- a/app/views/NewServerView.js +++ b/app/views/NewServerView.js @@ -15,9 +15,10 @@ import Button from '../containers/Button'; import TextInput from '../containers/TextInput'; import LoggedView from './View'; import I18n from '../i18n'; -import { scale, verticalScale, moderateScale } from '../utils/scaling'; +import { verticalScale, moderateScale } from '../utils/scaling'; import KeyboardView from '../presentation/KeyboardView'; import DeviceInfo from '../utils/deviceInfo'; +import { LIGHT_HEADER } from '../constants/headerOptions'; const styles = StyleSheet.create({ image: { @@ -27,23 +28,25 @@ const styles = StyleSheet.create({ height: 171 }, title: { - alignSelf: 'center', - color: '#2F343D', + ...sharedStyles.textBold, fontSize: moderateScale(22), - fontWeight: 'bold', - height: verticalScale(28), - lineHeight: verticalScale(28) + letterSpacing: 0, + color: '#2F343D', + alignSelf: 'center' }, inputContainer: { - marginTop: scale(20), - marginBottom: scale(20) + marginTop: 25, + marginBottom: 15 }, input: { - color: '#9EA2A8', + ...sharedStyles.textRegular, fontSize: 17, + letterSpacing: 0, + color: '#9EA2A8', paddingTop: 14, paddingBottom: 14, - paddingHorizontal: 16 + paddingLeft: 16, + paddingRight: 16 }, backButton: { position: 'absolute', @@ -64,6 +67,7 @@ const defaultServer = 'https://open.rocket.chat'; export default class NewServerView extends LoggedView { static options() { return { + ...LIGHT_HEADER, topBar: { visible: false, drawBehind: true @@ -93,7 +97,7 @@ export default class NewServerView extends LoggedView { connectServer(server); this.setState({ text: server }); } else { - setTimeout(() => { + this.timeout = setTimeout(() => { this.input.focus(); }, 600); } @@ -106,6 +110,12 @@ export default class NewServerView extends LoggedView { } } + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + onChangeText = (text) => { this.setState({ text }); } @@ -177,10 +187,9 @@ export default class NewServerView extends LoggedView { <TextInput inputRef={e => this.input = e} containerStyle={styles.inputContainer} - inputStyle={styles.input} placeholder={defaultServer} value={text} - returnKeyType='done' + returnKeyType='send' onChangeText={this.onChangeText} testID='new-server-view-input' onSubmitEditing={this.submit} diff --git a/app/views/OAuthView.js b/app/views/OAuthView.js index cc0b08bc9..16497f053 100644 --- a/app/views/OAuthView.js +++ b/app/views/OAuthView.js @@ -6,6 +6,7 @@ import { Navigation } from 'react-native-navigation'; import RocketChat from '../lib/rocketchat'; import I18n from '../i18n'; +import { DARK_HEADER } from '../constants/headerOptions'; const userAgentAndroid = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'; const userAgent = Platform.OS === 'ios' ? 'UserAgent' : userAgentAndroid; @@ -16,7 +17,9 @@ const userAgent = Platform.OS === 'ios' ? 'UserAgent' : userAgentAndroid; export default class OAuthView extends React.PureComponent { static options() { return { + ...DARK_HEADER, topBar: { + ...DARK_HEADER.topBar, leftButtons: [{ id: 'cancel', icon: Platform.OS === 'android' ? { uri: 'back', scale: Dimensions.get('window').scale } : undefined, diff --git a/app/views/OnboardingView/index.js b/app/views/OnboardingView/index.js index f792e836d..e74938b89 100644 --- a/app/views/OnboardingView/index.js +++ b/app/views/OnboardingView/index.js @@ -7,6 +7,7 @@ import Icon from 'react-native-vector-icons/MaterialIcons'; import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import { selectServerRequest, serverInitAdd, serverFinishAdd } from '../../actions/server'; import I18n from '../../i18n'; @@ -17,6 +18,7 @@ import LoggedView from '../View'; import DeviceInfo from '../../utils/deviceInfo'; import store from '../../lib/createStore'; import EventEmitter from '../../utils/events'; +import { LIGHT_HEADER } from '../../constants/headerOptions'; let NewServerView = null; @@ -32,6 +34,7 @@ let NewServerView = null; export default class OnboardingView extends LoggedView { static options() { return { + ...LIGHT_HEADER, topBar: { visible: false, drawBehind: true @@ -82,7 +85,7 @@ export default class OnboardingView extends LoggedView { newServer = (server) => { if (NewServerView == null) { NewServerView = require('../NewServerView').default; - Navigation.registerComponentWithRedux('NewServerView', () => NewServerView, Provider, store); + Navigation.registerComponentWithRedux('NewServerView', () => gestureHandlerRootHOC(NewServerView), Provider, store); } const { componentId } = this.props; @@ -147,14 +150,14 @@ export default class OnboardingView extends LoggedView { render() { return ( <SafeAreaView style={styles.container} testID='onboarding-view' forceInset={{ bottom: 'never' }}> - <Image style={styles.onboarding} source={{ uri: 'onboarding' }} /> + <Image style={styles.onboarding} source={{ uri: 'onboarding' }} fadeDuration={0} /> <Text style={styles.title}>{I18n.t('Welcome_to_RocketChat')}</Text> <Text style={styles.subtitle}>{I18n.t('Open_Source_Communication')}</Text> <View style={styles.buttonsContainer}> <Button type='secondary' title={I18n.t('Connect_to_a_server')} - icon={<Image source={{ uri: 'connect_server' }} style={{ width: 30, height: 30 }} />} + icon={<Image source={{ uri: 'connect_server' }} style={{ width: 30, height: 30 }} fadeDuration={0} />} onPress={this.connectServer} testID='connect-server-button' /> @@ -162,14 +165,14 @@ export default class OnboardingView extends LoggedView { type='secondary' title={I18n.t('Join_the_community')} subtitle='open.rocket.chat' - icon={<Image source={{ uri: 'logo_onboarding' }} style={{ width: 32, height: 27 }} />} + icon={<Image source={{ uri: 'logo_onboarding' }} style={{ width: 32, height: 27 }} fadeDuration={0} />} onPress={this.joinCommunity} testID='join-community-button' /> <Button type='primary' title={I18n.t('Create_a_new_workspace')} - icon={<Image source={{ uri: 'plus_onboarding' }} style={{ width: 24, height: 24 }} />} + icon={<Image source={{ uri: 'plus_onboarding' }} style={{ width: 24, height: 24 }} fadeDuration={0} />} onPress={this.createWorkspace} testID='create-workspace-button' /> diff --git a/app/views/OnboardingView/styles.js b/app/views/OnboardingView/styles.js index 87d1ab13c..12feae7fd 100644 --- a/app/views/OnboardingView/styles.js +++ b/app/views/OnboardingView/styles.js @@ -1,6 +1,7 @@ import { StyleSheet } from 'react-native'; -import { verticalScale, scale, moderateScale } from '../../utils/scaling'; +import { verticalScale, moderateScale } from '../../utils/scaling'; +import sharedStyles from '../Styles'; const colors = { backgroundPrimary: '#1D74F5', @@ -21,29 +22,26 @@ export default StyleSheet.create({ }, onboarding: { alignSelf: 'center', - paddingHorizontal: scale(45), marginTop: verticalScale(30), marginBottom: verticalScale(35), - maxHeight: verticalScale(250), + maxHeight: verticalScale(150), resizeMode: 'contain', width: 309, height: 250 }, title: { - alignSelf: 'center', - color: '#2F343D', + ...sharedStyles.textBold, + letterSpacing: 0, fontSize: moderateScale(24), - height: moderateScale(28), - lineHeight: moderateScale(28), - fontWeight: 'bold' + color: '#2F343D', + alignSelf: 'center', + marginBottom: verticalScale(8) }, subtitle: { - alignSelf: 'center', - color: '#54585E', + ...sharedStyles.textRegular, fontSize: moderateScale(16), - height: moderateScale(20), - lineHeight: moderateScale(20), - fontWeight: 'normal' + color: '#54585E', + alignSelf: 'center' }, buttonsContainer: { marginBottom: verticalScale(10), @@ -64,13 +62,13 @@ export default StyleSheet.create({ justifyContent: 'center' }, buttonTitle: { - fontSize: 16, - fontWeight: '600' + ...sharedStyles.textSemibold, + fontSize: 17 }, buttonSubtitle: { + ...sharedStyles.textRegular, color: '#9EA2A8', - fontSize: 14, - height: 18 + fontSize: 15 }, buttonIconContainer: { width: 65, diff --git a/app/views/PinnedMessagesView/index.js b/app/views/PinnedMessagesView/index.js index a37482a1a..daba4ae39 100644 --- a/app/views/PinnedMessagesView/index.js +++ b/app/views/PinnedMessagesView/index.js @@ -12,6 +12,7 @@ import styles from './styles'; import Message from '../../containers/message'; import RCActivityIndicator from '../../containers/ActivityIndicator'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const PIN_INDEX = 0; const CANCEL_INDEX = 1; @@ -34,8 +35,11 @@ const options = [I18n.t('Unpin'), I18n.t('Cancel')]; export default class PinnedMessagesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Pinned') } } diff --git a/app/views/PrivacyPolicyView.js b/app/views/PrivacyPolicyView.js index fc84812bf..a2b07f492 100644 --- a/app/views/PrivacyPolicyView.js +++ b/app/views/PrivacyPolicyView.js @@ -6,12 +6,27 @@ import SafeAreaView from 'react-native-safe-area-view'; import styles from './Styles'; import LoggedView from './View'; +import { DARK_HEADER } from '../constants/headerOptions'; +import I18n from '../i18n'; @connect(state => ({ privacyPolicy: state.settings.Layout_Privacy_Policy })) /** @extends React.Component */ export default class PrivacyPolicyView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + title: { + ...DARK_HEADER.topBar.title, + text: I18n.t('Privacy_Policy') + } + } + }; + } + static propTypes = { privacyPolicy: PropTypes.string } @@ -24,7 +39,7 @@ export default class PrivacyPolicyView extends LoggedView { const { privacyPolicy } = this.props; return ( - <SafeAreaView style={styles.container}> + <SafeAreaView style={styles.container} testID='privacy-view'> <WebView originWhitelist={['*']} source={{ html: privacyPolicy, baseUrl: '' }} /> </SafeAreaView> ); diff --git a/app/views/ProfileView/index.js b/app/views/ProfileView/index.js index 9d07dec19..e3ee4edd1 100644 --- a/app/views/ProfileView/index.js +++ b/app/views/ProfileView/index.js @@ -27,6 +27,7 @@ import Button from '../../containers/Button'; import Avatar from '../../containers/Avatar'; import Touch from '../../utils/touch'; import Drawer from '../../Drawer'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ user: { @@ -42,13 +43,16 @@ import Drawer from '../../Drawer'; export default class ProfileView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, leftButtons: [{ id: 'settings', icon: { uri: 'settings', scale: Dimensions.get('window').scale }, testID: 'rooms-list-view-sidebar' }], title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Profile') } }, diff --git a/app/views/RegisterView.js b/app/views/RegisterView.js index 902fc5997..1c623cf07 100644 --- a/app/views/RegisterView.js +++ b/app/views/RegisterView.js @@ -1,50 +1,59 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - Keyboard, Text, View, ScrollView + Keyboard, Text, ScrollView, Dimensions, Alert } from 'react-native'; import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; +import equal from 'deep-equal'; -import { registerSubmit as registerSubmitAction, setUsernameSubmit as setUsernameSubmitAction } from '../actions/login'; +import { registerSubmit as registerSubmitAction } from '../actions/login'; import TextInput from '../containers/TextInput'; import Button from '../containers/Button'; -import Loading from '../containers/Loading'; import KeyboardView from '../presentation/KeyboardView'; -import styles from './Styles'; -import { showToast } from '../utils/info'; +import sharedStyles from './Styles'; import scrollPersistTaps from '../utils/scrollPersistTaps'; import LoggedView from './View'; import I18n from '../i18n'; import store from '../lib/createStore'; +import { DARK_HEADER } from '../constants/headerOptions'; let TermsServiceView = null; let PrivacyPolicyView = null; +let LegalView = null; @connect(state => ({ server: state.server.server, - Accounts_NamePlaceholder: state.settings.Accounts_NamePlaceholder, - Accounts_EmailOrUsernamePlaceholder: state.settings.Accounts_EmailOrUsernamePlaceholder, - Accounts_PasswordPlaceholder: state.settings.Accounts_PasswordPlaceholder, - Accounts_RepeatPasswordPlaceholder: state.settings.Accounts_RepeatPasswordPlaceholder, login: state.login }), dispatch => ({ - registerSubmit: params => dispatch(registerSubmitAction(params)), - setUsernameSubmit: params => dispatch(setUsernameSubmitAction(params)) + registerSubmit: params => dispatch(registerSubmitAction(params)) })) /** @extends React.Component */ export default class RegisterView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + rightButtons: [{ + id: 'more', + icon: { uri: 'more', scale: Dimensions.get('window').scale }, + testID: 'register-view-more' + }] + } + }; + } + static propTypes = { componentId: PropTypes.string, server: PropTypes.string, registerSubmit: PropTypes.func.isRequired, - setUsernameSubmit: PropTypes.func, Accounts_UsernamePlaceholder: PropTypes.string, Accounts_NamePlaceholder: PropTypes.string, Accounts_EmailOrUsernamePlaceholder: PropTypes.string, Accounts_PasswordPlaceholder: PropTypes.string, - Accounts_RepeatPasswordPlaceholder: PropTypes.string, login: PropTypes.object } @@ -54,17 +63,66 @@ export default class RegisterView extends LoggedView { name: '', email: '', password: '', - confirmPassword: '', username: '' }; + Navigation.events().bindComponent(this); + } + + componentDidMount() { + this.timeout = setTimeout(() => { + this.nameInput.focus(); + }, 600); + } + + componentDidUpdate(prevProps) { + const { login, componentId, Site_Name } = this.props; + if (login && login.failure && login.error && !equal(login.error, prevProps.login.error)) { + Alert.alert(I18n.t('Oops'), login.error.reason); + } else if (Site_Name && prevProps.Site_Name !== Site_Name) { + this.setTitle(componentId, Site_Name); + } + } + + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + + setTitle = (componentId, title) => { + Navigation.mergeOptions(componentId, { + topBar: { + title: { + text: title + } + } + }); + } + + navigationButtonPressed = ({ buttonId }) => { + if (buttonId === 'more') { + if (LegalView == null) { + LegalView = require('./LegalView').default; + Navigation.registerComponentWithRedux('LegalView', () => gestureHandlerRootHOC(LegalView), Provider, store); + } + + Navigation.showModal({ + stack: { + children: [{ + component: { + name: 'LegalView' + } + }] + } + }); + } } valid = () => { const { - name, email, password, confirmPassword + name, email, password, username } = this.state; - return name.trim() && email.trim() - && password && confirmPassword && password === confirmPassword; + return name.trim() && email.trim() && password.trim() && username.trim(); } invalidEmail = () => { @@ -73,39 +131,23 @@ export default class RegisterView extends LoggedView { } submit = () => { - const { - name, email, password, code - } = this.state; - const { registerSubmit } = this.props; - if (!this.valid()) { - showToast(I18n.t('Some_field_is_invalid_or_empty')); return; } - + const { + name, email, password, username + } = this.state; + const { registerSubmit } = this.props; registerSubmit({ - name, email, pass: password, code + name, email, pass: password, username }); Keyboard.dismiss(); } - usernameSubmit = () => { - const { username } = this.state; - const { setUsernameSubmit } = this.props; - - if (!username) { - showToast(I18n.t('Username_is_empty')); - return; - } - - setUsernameSubmit({ username }); - Keyboard.dismiss(); - } - termsService = () => { if (TermsServiceView == null) { TermsServiceView = require('./TermsServiceView').default; - Navigation.registerComponentWithRedux('TermsServiceView', () => TermsServiceView, Provider, store); + Navigation.registerComponentWithRedux('TermsServiceView', () => gestureHandlerRootHOC(TermsServiceView), Provider, store); } const { componentId } = this.props; @@ -126,7 +168,7 @@ export default class RegisterView extends LoggedView { privacyPolicy = () => { if (PrivacyPolicyView == null) { PrivacyPolicyView = require('./PrivacyPolicyView').default; - Navigation.registerComponentWithRedux('PrivacyPolicyView', () => PrivacyPolicyView, Provider, store); + Navigation.registerComponentWithRedux('PrivacyPolicyView', () => gestureHandlerRootHOC(PrivacyPolicyView), Provider, store); } const { componentId } = this.props; @@ -144,134 +186,62 @@ export default class RegisterView extends LoggedView { }); } - _renderRegister() { - const { password, confirmPassword } = this.state; - const { - login, Accounts_NamePlaceholder, Accounts_EmailOrUsernamePlaceholder, Accounts_PasswordPlaceholder, Accounts_RepeatPasswordPlaceholder - } = this.props; - - if (login.token) { - return null; - } - return ( - <View> - <TextInput - inputRef={(e) => { this.name = e; }} - label={Accounts_NamePlaceholder || I18n.t('Name')} - placeholder={Accounts_NamePlaceholder || I18n.t('Name')} - returnKeyType='next' - iconLeft='account' - onChangeText={name => this.setState({ name })} - onSubmitEditing={() => { this.email.focus(); }} - testID='register-view-name' - /> - <TextInput - inputRef={(e) => { this.email = e; }} - label={Accounts_EmailOrUsernamePlaceholder || I18n.t('Email')} - placeholder={Accounts_EmailOrUsernamePlaceholder || I18n.t('Email')} - returnKeyType='next' - keyboardType='email-address' - iconLeft='email' - onChangeText={email => this.setState({ email })} - onSubmitEditing={() => { this.password.focus(); }} - error={this.invalidEmail()} - testID='register-view-email' - /> - <TextInput - inputRef={(e) => { this.password = e; }} - label={Accounts_PasswordPlaceholder || I18n.t('Password')} - placeholder={Accounts_PasswordPlaceholder || I18n.t('Password')} - returnKeyType='next' - iconLeft='key-variant' - secureTextEntry - onChangeText={value => this.setState({ password: value })} - onSubmitEditing={() => { this.confirmPassword.focus(); }} - testID='register-view-password' - /> - <TextInput - inputRef={(e) => { this.confirmPassword = e; }} - inputStyle={ - password - && confirmPassword - && confirmPassword !== password ? { borderColor: 'red' } : {} - } - label={Accounts_RepeatPasswordPlaceholder || I18n.t('Repeat_Password')} - placeholder={Accounts_RepeatPasswordPlaceholder || I18n.t('Repeat_Password')} - returnKeyType='done' - iconLeft='key-variant' - secureTextEntry - onChangeText={value => this.setState({ confirmPassword: value })} - onSubmitEditing={this.submit} - testID='register-view-repeat-password' - /> - - <View style={styles.alignItemsFlexStart}> - <Text style={styles.loginTermsText}> - {I18n.t('By_proceeding_you_are_agreeing')} - <Text style={styles.link} onPress={this.termsService}>{I18n.t('Terms_of_Service')}</Text> - {I18n.t('and')} - <Text style={styles.link} onPress={this.privacyPolicy}>{I18n.t('Privacy_Policy')}</Text> - </Text> - <Button - title={I18n.t('Register')} - type='primary' - onPress={this.submit} - testID='register-view-submit' - /> - </View> - </View> - ); - } - - _renderUsername() { - const { login, Accounts_UsernamePlaceholder } = this.props; - - if (!login.token) { - return null; - } - return ( - <View> - <TextInput - inputRef={(e) => { this.username = e; }} - label={Accounts_UsernamePlaceholder || I18n.t('Username')} - placeholder={Accounts_UsernamePlaceholder || I18n.t('Username')} - returnKeyType='done' - iconLeft='at' - onChangeText={username => this.setState({ username })} - onSubmitEditing={() => { this.usernameSubmit(); }} - testID='register-view-username' - /> - - <View style={styles.alignItemsFlexStart}> - <Button - title={I18n.t('Register')} - type='primary' - onPress={this.usernameSubmit} - testID='register-view-submit-username' - /> - </View> - </View> - ); - } - render() { const { login } = this.props; return ( - <KeyboardView contentContainerStyle={styles.container}> - <ScrollView {...scrollPersistTaps} contentContainerStyle={styles.containerScrollView}> - <SafeAreaView style={styles.container} testID='register-view' forceInset={{ bottom: 'never' }}> - <Text style={[styles.loginText, styles.loginTitle]}>{I18n.t('Sign_Up')}</Text> - {this._renderRegister()} - {this._renderUsername()} - {login.failure - ? ( - <Text style={styles.error} testID='register-view-error'> - {login.error.reason} - </Text> - ) - : null - } - <Loading visible={login.isFetching} /> + <KeyboardView contentContainerStyle={sharedStyles.container}> + <ScrollView {...scrollPersistTaps} contentContainerStyle={sharedStyles.containerScrollView}> + <SafeAreaView style={sharedStyles.container} testID='register-view' forceInset={{ bottom: 'never' }}> + <Text style={[sharedStyles.loginTitle, sharedStyles.textBold]}>{I18n.t('Sign_Up')}</Text> + <TextInput + inputRef={(e) => { this.nameInput = e; }} + placeholder={I18n.t('Name')} + returnKeyType='next' + iconLeft='user' + onChangeText={name => this.setState({ name })} + onSubmitEditing={() => { this.usernameInput.focus(); }} + testID='register-view-name' + /> + <TextInput + inputRef={(e) => { this.usernameInput = e; }} + placeholder={I18n.t('Username')} + returnKeyType='next' + iconLeft='mention' + onChangeText={username => this.setState({ username })} + onSubmitEditing={() => { this.emailInput.focus(); }} + testID='register-view-username' + /> + <TextInput + inputRef={(e) => { this.emailInput = e; }} + placeholder={I18n.t('Email')} + returnKeyType='next' + keyboardType='email-address' + iconLeft='mail' + onChangeText={email => this.setState({ email })} + onSubmitEditing={() => { this.passwordInput.focus(); }} + error={this.invalidEmail()} + testID='register-view-email' + /> + <TextInput + inputRef={(e) => { this.passwordInput = e; }} + placeholder={I18n.t('Password')} + returnKeyType='send' + iconLeft='key' + secureTextEntry + onChangeText={value => this.setState({ password: value })} + onSubmitEditing={this.submit} + testID='register-view-password' + containerStyle={sharedStyles.inputLastChild} + /> + + <Button + title={I18n.t('Register')} + type='primary' + onPress={this.submit} + testID='register-view-submit' + disabled={!this.valid()} + loading={login.isFetching} + /> </SafeAreaView> </ScrollView> </KeyboardView> diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 599222538..7a059d54d 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -24,6 +24,7 @@ import RoomTypeIcon from '../../containers/RoomTypeIcon'; import I18n from '../../i18n'; import scrollPersistTaps from '../../utils/scrollPersistTaps'; import store from '../../lib/createStore'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const renderSeparator = () => <View style={styles.separator} />; @@ -40,8 +41,11 @@ const modules = {}; export default class RoomActionsView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Actions') } } diff --git a/app/views/RoomFilesView/index.js b/app/views/RoomFilesView/index.js index 5845262a6..be34d5057 100644 --- a/app/views/RoomFilesView/index.js +++ b/app/views/RoomFilesView/index.js @@ -10,6 +10,7 @@ import styles from './styles'; import Message from '../../containers/message'; import RCActivityIndicator from '../../containers/ActivityIndicator'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ messages: state.roomFiles.messages, @@ -27,8 +28,11 @@ import I18n from '../../i18n'; export default class RoomFilesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Files') } } diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 1ee7be206..8c1c9daca 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -21,6 +21,7 @@ import SwitchContainer from './SwitchContainer'; import random from '../../utils/random'; import log from '../../utils/log'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const PERMISSION_SET_READONLY = 'set-readonly'; const PERMISSION_SET_REACT_WHEN_READONLY = 'set-react-when-readonly'; @@ -44,8 +45,11 @@ const PERMISSIONS_ARRAY = [ export default class RoomInfoEditView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Room_Info_Edit') } } diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index 47e120c10..66a0fae0f 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -5,6 +5,7 @@ import { connect, Provider } from 'react-redux'; import moment from 'moment'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import LoggedView from '../View'; import Status from '../../containers/status'; @@ -19,6 +20,7 @@ import RoomTypeIcon from '../../containers/RoomTypeIcon'; import I18n from '../../i18n'; import { iconsMap } from '../../Icons'; import store from '../../lib/createStore'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const PERMISSION_EDIT_ROOM = 'edit-room'; @@ -46,8 +48,11 @@ let RoomInfoEditView = null; export default class RoomInfoView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Room_Info') } } @@ -109,7 +114,7 @@ export default class RoomInfoView extends LoggedView { if (buttonId === 'edit') { if (RoomInfoEditView == null) { RoomInfoEditView = require('../RoomInfoEditView').default; - Navigation.registerComponentWithRedux('RoomInfoEditView', () => RoomInfoEditView, Provider, store); + Navigation.registerComponentWithRedux('RoomInfoEditView', () => gestureHandlerRootHOC(RoomInfoEditView), Provider, store); } Navigation.push(componentId, { diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index abfba5553..e9b42173a 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -18,6 +18,7 @@ import { showToast } from '../../utils/info'; import log from '../../utils/log'; import I18n from '../../i18n'; import SearchBox from '../../containers/SearchBox'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ baseUrl: state.settings.Site_Url || state.server ? state.server.server : '' @@ -26,8 +27,11 @@ import SearchBox from '../../containers/SearchBox'; export default class RoomMembersView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Members') }, rightButtons: [{ diff --git a/app/views/RoomView/Header/index.js b/app/views/RoomView/Header/index.js index 67af844fc..025b1540c 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/views/RoomView/Header/index.js @@ -12,9 +12,10 @@ import { STATUS_COLORS } from '../../../constants/colors'; const isIOS = () => Platform.OS === 'ios'; const TITLE_SIZE = 18; -const ICON_SIZE = 16; +const ICON_SIZE = 20; const styles = StyleSheet.create({ container: { + flex: 1, justifyContent: 'center', backgroundColor: isIOS() ? 'transparent' : '#2F343D', height: 44 diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 0ee080d8d..4766d8b34 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -4,7 +4,7 @@ import { Text, View, LayoutAnimation, ActivityIndicator, Platform } from 'react-native'; import { connect, Provider } from 'react-redux'; -import { RectButton } from 'react-native-gesture-handler'; +import { RectButton, gestureHandlerRootHOC } from 'react-native-gesture-handler'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; @@ -27,6 +27,7 @@ import debounce from '../../utils/debounce'; import { iconsMap } from '../../Icons'; import store from '../../lib/createStore'; import ConnectionBadge from '../../containers/ConnectionBadge'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; let RoomActionsView = null; @@ -50,12 +51,13 @@ let RoomActionsView = null; export default class RoomView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { - animate: true, + ...DEFAULT_HEADER.topBar, title: { component: { name: 'RoomHeaderView', - alignment: 'fill' + alignment: 'left' } }, rightButtons: [{ @@ -210,7 +212,7 @@ export default class RoomView extends LoggedView { if (buttonId === 'more') { if (RoomActionsView == null) { RoomActionsView = require('../RoomActionsView').default; - Navigation.registerComponentWithRedux('RoomActionsView', () => RoomActionsView, Provider, store); + Navigation.registerComponentWithRedux('RoomActionsView', () => gestureHandlerRootHOC(RoomActionsView), Provider, store); } Navigation.push(componentId, { diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 04dda44a3..9a5e44e85 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -7,6 +7,7 @@ import { connect, Provider } from 'react-redux'; import { isEqual } from 'lodash'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import SearchBox from '../../containers/SearchBox'; import ConnectionBadge from '../../containers/ConnectionBadge'; @@ -23,6 +24,7 @@ import Touch from '../../utils/touch'; import { toggleSortDropdown as toggleSortDropdownAction, openSearchHeader as openSearchHeaderAction, closeSearchHeader as closeSearchHeaderAction } from '../../actions/rooms'; import store from '../../lib/createStore'; import Drawer from '../../Drawer'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const ROW_HEIGHT = 70; const SCROLL_OFFSET = 56; @@ -73,7 +75,9 @@ let NewMessageView = null; export default class RoomsListView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, leftButtons, rightButtons, title: { @@ -186,7 +190,7 @@ export default class RoomsListView extends LoggedView { if (buttonId === 'newMessage') { if (NewMessageView == null) { NewMessageView = require('../NewMessageView').default; - Navigation.registerComponentWithRedux('NewMessageView', () => NewMessageView, Provider, store); + Navigation.registerComponentWithRedux('NewMessageView', () => gestureHandlerRootHOC(NewMessageView), Provider, store); } Navigation.showModal({ diff --git a/app/views/SearchMessagesView/index.js b/app/views/SearchMessagesView/index.js index 22b48ee5c..ddb4cca00 100644 --- a/app/views/SearchMessagesView/index.js +++ b/app/views/SearchMessagesView/index.js @@ -16,6 +16,7 @@ import Message from '../../containers/message'; import scrollPersistTaps from '../../utils/scrollPersistTaps'; import log from '../../utils/log'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ user: { @@ -29,8 +30,11 @@ import I18n from '../../i18n'; export default class SearchMessagesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Search') } } diff --git a/app/views/SelectedUsersView.js b/app/views/SelectedUsersView.js index a70f7be9e..9320de371 100644 --- a/app/views/SelectedUsersView.js +++ b/app/views/SelectedUsersView.js @@ -6,6 +6,7 @@ import { import { connect, Provider } from 'react-redux'; import { Navigation } from 'react-native-navigation'; import SafeAreaView from 'react-native-safe-area-view'; +import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import { addUser as addUserAction, removeUser as removeUserAction, reset as resetAction, setLoading as setLoadingAction @@ -21,6 +22,7 @@ import log from '../utils/log'; import SearchBox from '../containers/SearchBox'; import sharedStyles from './Styles'; import store from '../lib/createStore'; +import { DEFAULT_HEADER } from '../constants/headerOptions'; const styles = StyleSheet.create({ safeAreaView: { @@ -49,6 +51,12 @@ let CreateChannelView = null; })) /** @extends React.Component */ export default class SelectedUsersView extends LoggedView { + static options() { + return { + ...DEFAULT_HEADER + }; + } + static propTypes = { componentId: PropTypes.string, rid: PropTypes.string, @@ -112,19 +120,12 @@ export default class SelectedUsersView extends LoggedView { if (CreateChannelView == null) { CreateChannelView = require('./CreateChannelView').default; - Navigation.registerComponentWithRedux('CreateChannelView', () => CreateChannelView, Provider, store); + Navigation.registerComponentWithRedux('CreateChannelView', () => gestureHandlerRootHOC(CreateChannelView), Provider, store); } Navigation.push(componentId, { component: { - name: 'CreateChannelView', - options: { - topBar: { - title: { - text: I18n.t('Create_Channel') - } - } - } + name: 'CreateChannelView' } }); } else { diff --git a/app/views/SetUsernameView.js b/app/views/SetUsernameView.js new file mode 100644 index 000000000..5851fff09 --- /dev/null +++ b/app/views/SetUsernameView.js @@ -0,0 +1,127 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + Text, ScrollView, Alert, StyleSheet +} from 'react-native'; +import { connect } from 'react-redux'; +import SafeAreaView from 'react-native-safe-area-view'; +import equal from 'deep-equal'; +import { Navigation } from 'react-native-navigation'; + +import { setUsernameSubmit as setUsernameSubmitAction } from '../actions/login'; +import TextInput from '../containers/TextInput'; +import Button from '../containers/Button'; +import KeyboardView from '../presentation/KeyboardView'; +import sharedStyles from './Styles'; +import scrollPersistTaps from '../utils/scrollPersistTaps'; +import LoggedView from './View'; +import I18n from '../i18n'; +import { DARK_HEADER } from '../constants/headerOptions'; +import RocketChat from '../lib/rocketchat'; + +const styles = StyleSheet.create({ + loginTitle: { + marginVertical: 0, + marginTop: 15 + } +}); + +@connect(state => ({ + server: state.server.server, + login: state.login +}), dispatch => ({ + setUsernameSubmit: params => dispatch(setUsernameSubmitAction(params)) +})) +/** @extends React.Component */ +export default class SetUsernameView extends LoggedView { + static options() { + return { + ...DARK_HEADER + }; + } + + static propTypes = { + componentId: PropTypes.string, + server: PropTypes.string, + setUsernameSubmit: PropTypes.func.isRequired, + Accounts_UsernamePlaceholder: PropTypes.string, + login: PropTypes.object + } + + constructor(props) { + super('SetUsernameView', props); + this.state = { + username: '' + }; + const { componentId, server } = this.props; + Navigation.mergeOptions(componentId, { + topBar: { + title: { + text: server + } + } + }); + } + + async componentDidMount() { + this.timeout = setTimeout(() => { + this.usernameInput.focus(); + }, 600); + const suggestion = await RocketChat.getUsernameSuggestion(); + this.setState({ username: suggestion }); + } + + componentDidUpdate(prevProps) { + const { login } = this.props; + if (login && login.failure && login.error && !equal(login.error, prevProps.login.error)) { + Alert.alert(I18n.t('Oops'), login.error.reason); + } + } + + componentWillUnmount() { + if (this.timeout) { + clearTimeout(this.timeout); + } + } + + submit = () => { + const { username } = this.state; + const { setUsernameSubmit } = this.props; + setUsernameSubmit({ username }); + } + + render() { + const { username } = this.state; + const { login } = this.props; + return ( + <KeyboardView contentContainerStyle={sharedStyles.container}> + <ScrollView {...scrollPersistTaps} contentContainerStyle={sharedStyles.containerScrollView}> + <SafeAreaView style={sharedStyles.container} testID='set-username-view' forceInset={{ bottom: 'never' }}> + <Text style={[sharedStyles.loginTitle, sharedStyles.textBold, styles.loginTitle]}>{I18n.t('Username')}</Text> + <Text style={[sharedStyles.loginSubtitle, sharedStyles.textRegular]}>{I18n.t('Set_username_subtitle')}</Text> + <TextInput + inputRef={e => this.usernameInput = e} + placeholder={I18n.t('Username')} + returnKeyType='send' + iconLeft='mention' + onChangeText={value => this.setState({ username: value })} + value={username} + onSubmitEditing={this.submit} + testID='set-username-view-input' + clearButtonMode='while-editing' + containerStyle={sharedStyles.inputLastChild} + /> + <Button + title={I18n.t('Register')} + type='primary' + onPress={this.submit} + testID='set-username-view-submit' + disabled={!username} + loading={login.isFetching} + /> + </SafeAreaView> + </ScrollView> + </KeyboardView> + ); + } +} diff --git a/app/views/SettingsView/index.js b/app/views/SettingsView/index.js index 1a1336ec8..d6698e31b 100644 --- a/app/views/SettingsView/index.js +++ b/app/views/SettingsView/index.js @@ -19,6 +19,7 @@ import { showErrorAlert, showToast } from '../../utils/info'; import log from '../../utils/log'; import { setUser as setUserAction } from '../../actions/login'; import Drawer from '../../Drawer'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ userLanguage: state.login.user && state.login.user.language @@ -29,13 +30,16 @@ import Drawer from '../../Drawer'; export default class SettingsView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, leftButtons: [{ id: 'settings', icon: { uri: 'settings', scale: Dimensions.get('window').scale }, testID: 'rooms-list-view-sidebar' }], title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Settings') } }, diff --git a/app/views/SnippetedMessagesView/index.js b/app/views/SnippetedMessagesView/index.js index 55e5eb628..decf4330d 100644 --- a/app/views/SnippetedMessagesView/index.js +++ b/app/views/SnippetedMessagesView/index.js @@ -10,6 +10,7 @@ import styles from './styles'; import Message from '../../containers/message'; import RCActivityIndicator from '../../containers/ActivityIndicator'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; @connect(state => ({ messages: state.snippetedMessages.messages, @@ -27,8 +28,11 @@ import I18n from '../../i18n'; export default class SnippetedMessagesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Snippets') } } diff --git a/app/views/StarredMessagesView/index.js b/app/views/StarredMessagesView/index.js index fc2d0062e..c25b20c81 100644 --- a/app/views/StarredMessagesView/index.js +++ b/app/views/StarredMessagesView/index.js @@ -12,6 +12,7 @@ import styles from './styles'; import Message from '../../containers/message'; import RCActivityIndicator from '../../containers/ActivityIndicator'; import I18n from '../../i18n'; +import { DEFAULT_HEADER } from '../../constants/headerOptions'; const STAR_INDEX = 0; const CANCEL_INDEX = 1; @@ -34,8 +35,11 @@ const options = [I18n.t('Unstar'), I18n.t('Cancel')]; export default class StarredMessagesView extends LoggedView { static options() { return { + ...DEFAULT_HEADER, topBar: { + ...DEFAULT_HEADER.topBar, title: { + ...DEFAULT_HEADER.topBar.title, text: I18n.t('Starred') } } diff --git a/app/views/Styles.js b/app/views/Styles.js index ac9efeee1..6af9a8b6d 100644 --- a/app/views/Styles.js +++ b/app/views/Styles.js @@ -1,7 +1,7 @@ import { StyleSheet, Platform } from 'react-native'; import { - COLOR_DANGER, COLOR_BUTTON_PRIMARY, COLOR_TEXT, COLOR_SEPARATOR + COLOR_DANGER, COLOR_BUTTON_PRIMARY, COLOR_SEPARATOR } from '../constants/colors'; export default StyleSheet.create({ @@ -110,11 +110,6 @@ export default StyleSheet.create({ fontSize: 13, fontWeight: '700' }, - loginOAuthButtons: { - flexDirection: 'row', - flexWrap: 'wrap', - justifyContent: 'center' - }, validText: { color: 'green' }, @@ -184,14 +179,17 @@ export default StyleSheet.create({ opacity5: { opacity: 0.5 }, - - loginText: { - fontWeight: '700', - color: COLOR_TEXT - }, loginTitle: { fontSize: 20, - marginBottom: 20 + marginVertical: 15, + color: '#2f343d', + lineHeight: 28 + }, + loginSubtitle: { + fontSize: 16, + color: '#54585e', + lineHeight: 20, + marginBottom: 15 }, headerButton: { backgroundColor: 'transparent', @@ -216,5 +214,64 @@ export default StyleSheet.create({ borderColor: COLOR_SEPARATOR, borderTopWidth: StyleSheet.hairlineWidth, borderBottomWidth: StyleSheet.hairlineWidth + }, + textRegular: { + backgroundColor: 'transparent', + ...Platform.select({ + ios: { + fontFamily: 'System', + fontWeight: '400' + }, + android: { + includeFontPadding: false, + fontFamily: 'sans-serif', + fontWeight: 'normal' + } + }) + }, + textMedium: { + backgroundColor: 'transparent', + ...Platform.select({ + ios: { + fontFamily: 'System', + fontWeight: '500' + }, + android: { + includeFontPadding: false, + fontFamily: 'sans-serif-medium', + fontWeight: 'normal' + } + }) + }, + textSemibold: { + backgroundColor: 'transparent', + ...Platform.select({ + ios: { + fontFamily: 'System', + fontWeight: '600' + }, + android: { + includeFontPadding: false, + fontFamily: 'sans-serif', + fontWeight: 'bold' + } + }) + }, + textBold: { + backgroundColor: 'transparent', + ...Platform.select({ + ios: { + fontFamily: 'System', + fontWeight: '700' + }, + android: { + includeFontPadding: false, + fontFamily: 'sans-serif', + fontWeight: 'bold' + } + }) + }, + inputLastChild: { + marginBottom: 15 } }); diff --git a/app/views/TermsServiceView.js b/app/views/TermsServiceView.js index ce9f9c279..1de3ed8c9 100644 --- a/app/views/TermsServiceView.js +++ b/app/views/TermsServiceView.js @@ -6,12 +6,27 @@ import SafeAreaView from 'react-native-safe-area-view'; import styles from './Styles'; import LoggedView from './View'; +import { DARK_HEADER } from '../constants/headerOptions'; +import I18n from '../i18n'; @connect(state => ({ termsService: state.settings.Layout_Terms_of_Service })) /** @extends React.Component */ export default class TermsServiceView extends LoggedView { + static options() { + return { + ...DARK_HEADER, + topBar: { + ...DARK_HEADER.topBar, + title: { + ...DARK_HEADER.topBar.title, + text: I18n.t('Terms_of_Service') + } + } + }; + } + static propTypes = { termsService: PropTypes.string } @@ -23,7 +38,7 @@ export default class TermsServiceView extends LoggedView { render() { const { termsService } = this.props; return ( - <SafeAreaView style={styles.container}> + <SafeAreaView style={styles.container} testID='terms-view'> <WebView originWhitelist={['*']} source={{ html: termsService, baseUrl: '' }} /> </SafeAreaView> ); diff --git a/app/views/index.js b/app/views/index.js index e84fc69ff..728caa80b 100644 --- a/app/views/index.js +++ b/app/views/index.js @@ -12,12 +12,12 @@ import SettingsView from './SettingsView'; import Sidebar from '../containers/Sidebar'; export const registerScreens = (store) => { - Navigation.registerComponentWithRedux('OnboardingView', () => OnboardingView, Provider, store); - Navigation.registerComponentWithRedux('ProfileView', () => ProfileView, Provider, store); - Navigation.registerComponentWithRedux('RoomsListHeaderView', () => RoomsListHeaderView, Provider, store); + Navigation.registerComponentWithRedux('OnboardingView', () => gestureHandlerRootHOC(OnboardingView), Provider, store); + Navigation.registerComponentWithRedux('ProfileView', () => gestureHandlerRootHOC(ProfileView), Provider, store); + Navigation.registerComponentWithRedux('RoomsListHeaderView', () => gestureHandlerRootHOC(RoomsListHeaderView), Provider, store); Navigation.registerComponentWithRedux('RoomsListView', () => gestureHandlerRootHOC(RoomsListView), Provider, store); Navigation.registerComponentWithRedux('RoomView', () => gestureHandlerRootHOC(RoomView), Provider, store); - Navigation.registerComponentWithRedux('RoomHeaderView', () => RoomHeaderView, Provider, store); - Navigation.registerComponentWithRedux('SettingsView', () => SettingsView, Provider, store); - Navigation.registerComponentWithRedux('Sidebar', () => Sidebar, Provider, store); + Navigation.registerComponentWithRedux('RoomHeaderView', () => gestureHandlerRootHOC(RoomHeaderView), Provider, store); + Navigation.registerComponentWithRedux('SettingsView', () => gestureHandlerRootHOC(SettingsView), Provider, store); + Navigation.registerComponentWithRedux('Sidebar', () => gestureHandlerRootHOC(Sidebar), Provider, store); }; diff --git a/e2e/00-onboarding.spec.js b/e2e/00-onboarding.spec.js index a75921957..377e101bd 100644 --- a/e2e/00-onboarding.spec.js +++ b/e2e/00-onboarding.spec.js @@ -40,8 +40,8 @@ describe('Onboarding', () => { await element(by.id('join-community-button')).tap(); await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('welcome-view'))).toBeVisible(); - await waitFor(element(by.text('https://open.rocket.chat'))).toBeVisible().withTimeout(60000); - await expect(element(by.text('https://open.rocket.chat'))).toBeVisible(); + await waitFor(element(by.text('Rocket.Chat'))).toBeVisible().withTimeout(60000); + await expect(element(by.text('Rocket.Chat'))).toBeVisible(); }); it('should navigate to new server', async() => { @@ -60,14 +60,25 @@ describe('Onboarding', () => { await expect(element(by.text(errorText))).toBeVisible(); }); - it('should enter a valid server and navigate to welcome', async() => { + it('should enter a valid server with login services and navigate to welcome', async() => { await element(by.text('OK')).tap(); - await element(by.id('new-server-view-input')).replaceText(data.server); + await element(by.id('new-server-view-input')).replaceText('open'); await element(by.id('new-server-view-button')).tap(); await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('welcome-view'))).toBeVisible(); }); + it('should enter a valid server without login services and navigate to login', async() => { + await device.reloadReactNative(); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000); + await element(by.id('connect-server-button')).tap(); + await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); + await element(by.id('new-server-view-input')).replaceText(data.server); + await element(by.id('new-server-view-button')).tap(); + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(60000); + await expect(element(by.id('login-view'))).toBeVisible(); + }); + afterEach(async() => { takeScreenshot(); diff --git a/e2e/01-welcome.spec.js b/e2e/01-welcome.spec.js index 81a6075b1..bcb3899ae 100644 --- a/e2e/01-welcome.spec.js +++ b/e2e/01-welcome.spec.js @@ -5,6 +5,12 @@ const { takeScreenshot } = require('./helpers/screenshot'); const { tapBack } = require('./helpers/app'); describe('Welcome screen', () => { + before(async() => { + await device.reloadReactNative(); + await element(by.id('join-community-button')).tap(); + await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000); + }) + describe('Render', async() => { it('should have welcome screen', async() => { await expect(element(by.id('welcome-view'))).toBeVisible(); @@ -30,14 +36,20 @@ describe('Welcome screen', () => { await element(by.id('welcome-view-login')).tap(); await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); await expect(element(by.id('login-view'))).toBeVisible(); - await tapBack(); }); it('should navigate to register', async() => { + await tapBack(); await element(by.id('welcome-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); await expect(element(by.id('register-view'))).toBeVisible(); + }); + + it('should navigate to legal', async() => { await tapBack(); + await element(by.id('welcome-view-more')).tap(); + await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('legal-view'))).toBeVisible(); }); afterEach(async() => { diff --git a/e2e/02-legal.spec.js b/e2e/02-legal.spec.js new file mode 100644 index 000000000..19403a10b --- /dev/null +++ b/e2e/02-legal.spec.js @@ -0,0 +1,56 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const { takeScreenshot } = require('./helpers/screenshot'); +const { tapBack } = require('./helpers/app'); + +describe('Legal screen', () => { + before(async() => { + await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('legal-view'))).toBeVisible(); + }) + + describe('Render', async() => { + it('should have legal screen', async() => { + await expect(element(by.id('legal-view'))).toBeVisible(); + }); + + it('should have terms of service button', async() => { + await expect(element(by.id('legal-terms-button'))).toBeVisible(); + }); + + it('should have privacy policy button', async() => { + await expect(element(by.id('legal-privacy-button'))).toBeVisible(); + }); + + after(async() => { + takeScreenshot(); + }); + }); + + describe('Usage', async() => { + it('should navigate to terms', async() => { + await element(by.id('legal-terms-button')).tap(); + await waitFor(element(by.id('terms-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('terms-view'))).toBeVisible(); + }); + + it('should navigate to privacy', async() => { + await tapBack(); + await element(by.id('legal-privacy-button')).tap(); + await waitFor(element(by.id('privacy-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('privacy-view'))).toBeVisible(); + }); + + it('should navigate to welcome', async() => { + await tapBack(); + await element(by.id('legal-view-close')).tap(); + await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000); + await expect(element(by.id('welcome-view'))).toBeVisible(); + }); + + afterEach(async() => { + takeScreenshot(); + }); + }); +}); diff --git a/e2e/03-createuser.spec.js b/e2e/03-createuser.spec.js deleted file mode 100644 index e4d9615b8..000000000 --- a/e2e/03-createuser.spec.js +++ /dev/null @@ -1,139 +0,0 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); -const { takeScreenshot } = require('./helpers/screenshot'); -const { logout, sleep } = require('./helpers/app'); -const data = require('./data'); - -describe('Create user screen', () => { - before(async() => { - await device.reloadReactNative(); - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000); - await element(by.id('connect-server-button')).tap(); - await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).replaceText(data.server); - await element(by.id('new-server-view-button')).tap(); - await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000); - await element(by.id('welcome-view-register')).tap(); - await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); - }); - - describe('Render', () => { - it('should have create user screen', async() => { - await expect(element(by.id('register-view'))).toBeVisible(); - }); - - it('should have name input', async() => { - await expect(element(by.id('register-view-name'))).toBeVisible(); - }); - - it('should have email input', async() => { - await expect(element(by.id('register-view-email'))).toBeVisible(); - }); - - it('should have password input', async() => { - await expect(element(by.id('register-view-password'))).toBeVisible(); - }); - - it('should have show password icon', async() => { - await expect(element(by.id('register-view-password-icon-right'))).toBeVisible(); - }); - - it('should have repeat password input', async() => { - await expect(element(by.id('register-view-repeat-password'))).toBeVisible(); - }); - - it('should have repeat password icon', async() => { - await expect(element(by.id('register-view-repeat-password-icon-right'))).toBeVisible(); - }); - - it('should have submit button', async() => { - await expect(element(by.id('register-view-submit'))).toBeVisible(); - }); - - after(async() => { - takeScreenshot(); - }); - }); - - describe('Usage', () => { - it('should submit empty form and raise error', async() => { - await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.text('Some field is invalid or empty'))).toBeVisible().withTimeout(10000); - await expect(element(by.text('Some field is invalid or empty'))).toBeVisible(); - }); - - it('should submit different passwords and raise error', async() => { - await element(by.id('register-view-name')).replaceText(data.user); - await element(by.id('register-view-email')).replaceText(data.email); - await element(by.id('register-view-password')).replaceText('abc'); - await element(by.id('register-view-repeat-password')).replaceText('xyz'); - await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.text('Some field is invalid or empty'))).toBeVisible().withTimeout(10000); - await expect(element(by.text('Some field is invalid or empty'))).toBeVisible(); - }); - - it('should submit invalid email and raise error', async() => { - await element(by.id('register-view-name')).replaceText(data.user); - await element(by.id('register-view-email')).replaceText('invalidemail'); - await element(by.id('register-view-password')).replaceText(data.password); - await element(by.id('register-view-repeat-password')).replaceText(data.password); - await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.id('register-view-error'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('register-view-error'))).toBeVisible(); - await expect(element(by.id('register-view-error'))).toHaveText('Invalid email invalidemail'); - }); - - it('should submit email already taken and raise error', async() => { - await element(by.id('register-view-name')).replaceText(data.user); - await element(by.id('register-view-email')).replaceText('diego.mello@rocket.chat'); - await element(by.id('register-view-password')).replaceText(data.password); - await element(by.id('register-view-repeat-password')).replaceText(data.password); - await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.id('register-view-error'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('register-view-error'))).toBeVisible(); - await expect(element(by.id('register-view-error'))).toHaveText('Email already exists.'); - }); - - it('should complete first part of register', async() => { - await element(by.id('register-view-name')).replaceText(data.user); - await element(by.id('register-view-email')).replaceText(data.email); - await element(by.id('register-view-password')).replaceText(data.password); - await element(by.id('register-view-repeat-password')).replaceText(data.password); - await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.id('register-view-username'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('register-view-username'))).toBeVisible(); - }); - - it('should submit empty username and raise error', async() => { - await element(by.id('register-view-submit-username')).tap(); - await waitFor(element(by.text('Username is empty'))).toBeVisible().withTimeout(10000); - await expect(element(by.text('Username is empty'))).toBeVisible(); - }); - - it('should submit already taken username and raise error', async() => { - await element(by.id('register-view-username')).replaceText('diego.mello'); - await element(by.id('register-view-submit-username')).tap(); - await waitFor(element(by.id('register-view-error'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('register-view-error'))).toBeVisible(); - }); - - it('should finish register', async() => { - await sleep(2000); - await element(by.id('register-view-username')).replaceText(data.user); - await element(by.id('register-view-submit-username')).tap(); - await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('rooms-list-view'))).toBeVisible(); - }); - - // TODO: terms and privacy - - afterEach(async() => { - takeScreenshot(); - }); - - after(async() => { - await logout(); - }); - }); -}); diff --git a/e2e/02-forgotpassword.spec.js b/e2e/03-forgotpassword.spec.js similarity index 100% rename from e2e/02-forgotpassword.spec.js rename to e2e/03-forgotpassword.spec.js diff --git a/e2e/04-createuser.spec.js b/e2e/04-createuser.spec.js new file mode 100644 index 000000000..79e33d972 --- /dev/null +++ b/e2e/04-createuser.spec.js @@ -0,0 +1,118 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const { takeScreenshot } = require('./helpers/screenshot'); +const { logout, sleep } = require('./helpers/app'); +const data = require('./data'); + +async function navigateToRegister() { + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000); + await element(by.id('connect-server-button')).tap(); + await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); + await element(by.id('new-server-view-input')).replaceText(data.server); + await element(by.id('new-server-view-button')).tap(); + // we're assuming the server don't have login services and the navigation will jump to login + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(60000); + await element(by.id('login-view-register')).tap(); + await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); +} + +describe('Create user screen', () => { + before(async() => { + await device.reloadReactNative(); + await navigateToRegister(); + }); + + describe('Render', () => { + it('should have create user screen', async() => { + await expect(element(by.id('register-view'))).toBeVisible(); + }); + + it('should have name input', async() => { + await expect(element(by.id('register-view-name'))).toBeVisible(); + }); + + it('should have email input', async() => { + await expect(element(by.id('register-view-email'))).toBeVisible(); + }); + + it('should have password input', async() => { + await expect(element(by.id('register-view-password'))).toBeVisible(); + }); + + it('should have show password icon', async() => { + await expect(element(by.id('register-view-password-icon-right'))).toBeVisible(); + }); + + it('should have submit button', async() => { + await expect(element(by.id('register-view-submit'))).toBeVisible(); + }); + + it('should have legal button', async() => { + await expect(element(by.id('register-view-more'))).toBeVisible(); + }); + + after(async() => { + takeScreenshot(); + }); + }); + + describe('Usage', () => { + it('should submit invalid email and raise error', async() => { + const invalidEmail = 'invalidemail'; + await element(by.id('register-view-name')).replaceText(data.user); + await element(by.id('register-view-username')).replaceText(data.user); + await element(by.id('register-view-email')).replaceText(invalidEmail); + await element(by.id('register-view-password')).replaceText(data.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.text(`Invalid email ${ invalidEmail }`)).atIndex(0)).toExist().withTimeout(10000); + await expect(element(by.text(`Invalid email ${ invalidEmail }`)).atIndex(0)).toExist(); + await element(by.text('OK')).tap(); + }); + + it('should submit email already taken and raise error', async() => { + const invalidEmail = 'invalidemail'; + await element(by.id('register-view-name')).replaceText(data.user); + await element(by.id('register-view-username')).replaceText(data.user); + await element(by.id('register-view-email')).replaceText('diego.mello@rocket.chat'); + await element(by.id('register-view-password')).replaceText(data.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.text('Email already exists.')).atIndex(0)).toExist().withTimeout(10000); + await expect(element(by.text('Email already exists.')).atIndex(0)).toExist(); + await element(by.text('OK')).tap(); + }); + + it('should register', async() => { + await element(by.id('register-view-name')).replaceText(data.user); + await element(by.id('register-view-username')).replaceText(data.user); + await element(by.id('register-view-email')).replaceText(data.email); + await element(by.id('register-view-password')).replaceText(data.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); + await expect(element(by.id('rooms-list-view'))).toBeVisible(); + }); + + it('should pick an existing username, suggest another and finish register', async() => { + await logout(); + await navigateToRegister(); + await element(by.id('register-view-name')).replaceText(data.user); + await element(by.id('register-view-username')).replaceText(data.user); + await element(by.id('register-view-email')).replaceText(`${ data.email }2`); + await element(by.id('register-view-password')).replaceText(data.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.id('set-username-view'))).toBeVisible().withTimeout(60000); + await expect(element(by.id('set-username-view'))).toBeVisible(); + await element(by.id('set-username-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); + await expect(element(by.id('rooms-list-view'))).toBeVisible(); + }); + + afterEach(async() => { + takeScreenshot(); + }); + + after(async() => { + await logout(); + }); + }); +}); diff --git a/e2e/04-login.spec.js b/e2e/05-login.spec.js similarity index 83% rename from e2e/04-login.spec.js rename to e2e/05-login.spec.js index 4540f91e3..21bdf843e 100644 --- a/e2e/04-login.spec.js +++ b/e2e/05-login.spec.js @@ -39,6 +39,10 @@ describe('Login screen', () => { await expect(element(by.id('login-view-forgot-password'))).toBeVisible(); }); + it('should have legal button', async() => { + await expect(element(by.id('login-view-more'))).toBeVisible(); + }); + after(async() => { takeScreenshot(); }); @@ -58,21 +62,14 @@ describe('Login screen', () => { await expect(element(by.id('forgot-password-view'))).toBeVisible(); await tapBack(); }); - - it('should navigate to welcome', async() => { - await tapBack(); - await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); - await expect(element(by.id('welcome-view'))).toBeVisible(); - await element(by.id('welcome-view-login')).tap(); - await expect(element(by.id('login-view'))).toBeVisible(); - }); it('should insert wrong password and get error', async() => { await element(by.id('login-view-email')).replaceText(data.user); await element(by.id('login-view-password')).replaceText('error'); await element(by.id('login-view-submit')).tap(); - await waitFor(element(by.text('User or Password incorrect'))).toBeVisible().withTimeout(10000); - await expect(element(by.text('User or Password incorrect'))).toBeVisible(); + await waitFor(element(by.text('Your credentials were rejected! Please try again.'))).toBeVisible().withTimeout(10000); + await expect(element(by.text('Your credentials were rejected! Please try again.'))).toBeVisible(); + await element(by.text('OK')).tap(); }); it('should login with success', async() => { diff --git a/e2e/05-roomslist.spec.js b/e2e/06-roomslist.spec.js similarity index 100% rename from e2e/05-roomslist.spec.js rename to e2e/06-roomslist.spec.js diff --git a/e2e/06-createroom.spec.js b/e2e/07-createroom.spec.js similarity index 100% rename from e2e/06-createroom.spec.js rename to e2e/07-createroom.spec.js diff --git a/e2e/07-room.spec.js b/e2e/08-room.spec.js similarity index 100% rename from e2e/07-room.spec.js rename to e2e/08-room.spec.js diff --git a/e2e/08-roomactions.spec.js b/e2e/09-roomactions.spec.js similarity index 100% rename from e2e/08-roomactions.spec.js rename to e2e/09-roomactions.spec.js diff --git a/e2e/09-roominfo.spec.js b/e2e/10-roominfo.spec.js similarity index 100% rename from e2e/09-roominfo.spec.js rename to e2e/10-roominfo.spec.js diff --git a/e2e/10-changeserver.spec.js b/e2e/11-changeserver.spec.js similarity index 79% rename from e2e/10-changeserver.spec.js rename to e2e/11-changeserver.spec.js index c64084383..3dfaf0e54 100644 --- a/e2e/10-changeserver.spec.js +++ b/e2e/11-changeserver.spec.js @@ -22,18 +22,26 @@ describe('Change server', () => { await element(by.id('new-server-view-input')).replaceText(data.alternateServer); await element(by.id('new-server-view-button')).tap(); // Navigate to register - await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); - await element(by.id('welcome-view-register')).tap(); + // await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); + // await element(by.id('welcome-view-register')).tap(); + // await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); + try { + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('login-view'))).toBeVisible(); + await element(by.id('login-view-register')).tap(); + } catch (error) { + await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('welcome-view'))).toBeVisible(); + await element(by.id('welcome-view-register')).tap(); + } await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('register-view'))).toBeVisible(); // Register new user await element(by.id('register-view-name')).replaceText(data.user); + await element(by.id('register-view-username')).replaceText(data.user); await element(by.id('register-view-email')).replaceText(data.email); await element(by.id('register-view-password')).replaceText(data.password); - await element(by.id('register-view-repeat-password')).replaceText(data.password); await element(by.id('register-view-submit')).tap(); - await waitFor(element(by.id('register-view-username'))).toBeVisible().withTimeout(60000); - await element(by.id('register-view-username')).replaceText(data.user); - await element(by.id('register-view-submit-username')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('rooms-list-view'))).toBeVisible(); // For a sanity test, to make sure roomslist is showing correct rooms diff --git a/e2e/11-broadcast.spec.js b/e2e/12-broadcast.spec.js similarity index 94% rename from e2e/11-broadcast.spec.js rename to e2e/12-broadcast.spec.js index 7da696cf9..ab314fbf4 100644 --- a/e2e/11-broadcast.spec.js +++ b/e2e/12-broadcast.spec.js @@ -1,6 +1,8 @@ const { device, expect, element, by, waitFor } = require('detox'); +const OTP = require('otp.js'); +const GA = OTP.googleAuthenticator; const { takeScreenshot } = require('./helpers/screenshot'); const { logout, navigateToLogin, login, tapBack } = require('./helpers/app'); const data = require('./data'); @@ -58,15 +60,19 @@ describe('Broadcast room', () => { await expect(element(by.id('rooms-list-view'))).toBeVisible(); await logout(); await navigateToLogin(); + // 2FA login in stable:detox await element(by.id('login-view-email')).replaceText(data.alternateUser); await element(by.id('login-view-password')).replaceText(data.alternateUserPassword); await element(by.id('login-view-submit')).tap(); + const code = GA.gen(data.alternateUserTOTPSecret); + await element(by.id('login-view-totp')).replaceText(code); + await element(by.id('login-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); // await device.reloadReactNative(); // remove after fix logout // await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); await element(by.id('rooms-list-view-search')).replaceText(`broadcast${ data.random }`); - await waitFor(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toBeVisible().withTimeout(60000); - await expect(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toBeVisible(); + await waitFor(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist().withTimeout(60000); + await expect(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist(); await element(by.id(`rooms-list-view-item-broadcast${ data.random }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.text(`broadcast${ data.random }`))).toBeVisible().withTimeout(60000); diff --git a/e2e/12-profile.spec.js b/e2e/13-profile.spec.js similarity index 83% rename from e2e/12-profile.spec.js rename to e2e/13-profile.spec.js index c1ded9c67..f1687c563 100644 --- a/e2e/12-profile.spec.js +++ b/e2e/13-profile.spec.js @@ -24,15 +24,15 @@ describe('Profile screen', () => { }); it('should have avatar', async() => { - await expect(element(by.id('profile-view-avatar')).atIndex(0)).toBeVisible(); + await expect(element(by.id('profile-view-avatar')).atIndex(0)).toExist(); }); it('should have name', async() => { - await expect(element(by.id('profile-view-name'))).toBeVisible(); + await expect(element(by.id('profile-view-name'))).toExist(); }); it('should have username', async() => { - await expect(element(by.id('profile-view-username'))).toBeVisible(); + await expect(element(by.id('profile-view-username'))).toExist(); }); it('should have email', async() => { @@ -40,31 +40,31 @@ describe('Profile screen', () => { }); it('should have new password', async() => { - await expect(element(by.id('profile-view-new-password'))).toBeVisible(); + await expect(element(by.id('profile-view-new-password'))).toExist(); }); it('should have avatar url', async() => { - await expect(element(by.id('profile-view-avatar-url'))).toBeVisible(); + await expect(element(by.id('profile-view-avatar-url'))).toExist(); }); it('should have reset avatar button', async() => { - await waitFor(element(by.id('profile-view-reset-avatar'))).toBeVisible().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); - await expect(element(by.id('profile-view-reset-avatar'))).toBeVisible(); + await waitFor(element(by.id('profile-view-reset-avatar'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); + await expect(element(by.id('profile-view-reset-avatar'))).toExist(); }); it('should have upload avatar button', async() => { - await waitFor(element(by.id('profile-view-upload-avatar'))).toBeVisible().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); - await expect(element(by.id('profile-view-upload-avatar'))).toBeVisible(); + await waitFor(element(by.id('profile-view-upload-avatar'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); + await expect(element(by.id('profile-view-upload-avatar'))).toExist(); }); it('should have avatar url button', async() => { - await waitFor(element(by.id('profile-view-avatar-url-button'))).toBeVisible().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); - await expect(element(by.id('profile-view-avatar-url-button'))).toBeVisible(); + await waitFor(element(by.id('profile-view-avatar-url-button'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); + await expect(element(by.id('profile-view-avatar-url-button'))).toExist(); }); it('should have submit button', async() => { - await waitFor(element(by.id('profile-view-submit'))).toBeVisible().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); - await expect(element(by.id('profile-view-submit'))).toBeVisible(); + await waitFor(element(by.id('profile-view-submit'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); + await expect(element(by.id('profile-view-submit'))).toExist(); }); after(async() => { diff --git a/e2e/data.js b/e2e/data.js index 8cdd99e0e..b78e226f4 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -7,6 +7,7 @@ const data = { password: `password${ value }`, alternateUser: 'detox', alternateUserPassword: '123', + alternateUserTOTPSecret: 'HJGECLDOH5RCKJSWMREXAKKENVZXKOJ6I5ZTKPSRIEQWGOK5K5KA', email: `diego.mello+e2e${ value }@rocket.chat`, random: value } diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index 6825c730c..101083324 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -14,9 +14,16 @@ async function addServer() { async function navigateToLogin() { await addServer(); - await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); - await element(by.id('welcome-view-login')).tap(); - await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + try { + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('login-view'))).toBeVisible(); + } catch (error) { + await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('welcome-view'))).toBeVisible(); + await element(by.id('welcome-view-login')).tap(); + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('login-view'))).toBeVisible(); + } } async function login() { diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 9b8f0204a..2ecdd1117 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -64,7 +64,6 @@ AE5D35882AE04CC29630FB3D /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DC6EE17B5550465E98C70FF0 /* Entypo.ttf */; }; B88F586F1FBF57F600B352B8 /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88F58461FBF55E200B352B8 /* libRCTPushNotification.a */; }; B8971BB2202A093B0000D245 /* libKeyboardTrackingView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8971BB1202A091D0000D245 /* libKeyboardTrackingView.a */; }; - B8C682A81FD850F4003A12C8 /* icomoon.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B8C682611FD84CEF003A12C8 /* icomoon.ttf */; }; B8C682AC1FD8511D003A12C8 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1B0746E708284151B8AD1198 /* Ionicons.ttf */; }; B8C682AD1FD8511E003A12C8 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1B0746E708284151B8AD1198 /* Ionicons.ttf */; }; B8C682AE1FD8511F003A12C8 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1B0746E708284151B8AD1198 /* Ionicons.ttf */; }; @@ -564,7 +563,6 @@ B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; B88F58361FBF55E200B352B8 /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = "../node_modules/react-native/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj"; sourceTree = "<group>"; }; B8971BAC202A091D0000D245 /* KeyboardTrackingView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = KeyboardTrackingView.xcodeproj; path = "../node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingView.xcodeproj"; sourceTree = "<group>"; }; - B8C682611FD84CEF003A12C8 /* icomoon.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = icomoon.ttf; path = ../resources/fonts/icomoon.ttf; sourceTree = "<group>"; }; BAAE4B947F5D44959F0A9D5A /* libRNZeroconf.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNZeroconf.a; sourceTree = "<group>"; }; C01CD6D4653143EEB5100C3A /* libRNI18n-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNI18n-tvOS.a"; sourceTree = "<group>"; }; C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNAudio.xcodeproj; path = "../node_modules/react-native-audio/ios/RNAudio.xcodeproj"; sourceTree = "<group>"; }; @@ -971,7 +969,6 @@ AF5E16F0398347E6A80C8CBE /* Resources */ = { isa = PBXGroup; children = ( - B8C682611FD84CEF003A12C8 /* icomoon.ttf */, DC6EE17B5550465E98C70FF0 /* Entypo.ttf */, A18EFC3B0CFE40E0918A8F0C /* EvilIcons.ttf */, 7A30DA4B2D474348824CD05B /* FontAwesome.ttf */, @@ -1706,7 +1703,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B8C682A81FD850F4003A12C8 /* icomoon.ttf in Resources */, 7A309C9C20724870000C6B13 /* Fabric.sh in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, diff --git a/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back.png b/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back.png deleted file mode 100644 index 5357f91a57ddb89bc8fe7b667a583a26c505ff2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)<h;3K|Lk000e1NJLTq000aC000yS1^@s6x$xW(00004XF*Lt006O% z3;baP0003{Nkl<ZC>4#8y-or_5XWcMv$&Jm4hjuV;0yQ)Y6xhpvC;rRYichMFk0A} zXb?Z1!P1Y|85=(mvD3!JyF$Y_bFk-faBy4PZgzgZ{m<<kLV_`ONRyv0-T?qUsByf& zAJ6_Nbzlt$zeWlg2BHO}aHH+oM;Mn7h2M6ZePM?Raj*!MJj@ZmPks}i+lD?_GkpmL zyeK_KVUa>12^<PZVG*nV=6jCoSs-(CzXJiuCeeS3CS<PF{W|_kXYB&N&Lt7;WwyOd z6Ns*Z1d(P_b{-Kgs6&lWQg};p(tMSy*KfbcNlPpj+pg0XnxHqYs`xuIWfu_eoTYlE z;uUpG&jUYSAf@bOPB`PcsHL~Ol7?mOYsoD1+B@N-93Yn8U8g4Xfdnn}+FRlFT72KT z>55mDT5N(Ab1j;<x$}=XDX)}T9V>_^()F!h2c*Y8wYIN;u7(sx00000NkvXXu0mjf DG{~$$ diff --git a/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@2x.png deleted file mode 100644 index 4d21bc60d0685c506ceb810c608216dd0315872f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)<h;3K|Lk000e1NJLTq000;O001Zm1^@s6<PADi00004XF*Lt006O% z3;baP0007oNkl<ZNDZ}?%Wl&^6o${4wh~ULxNcYwDi&OX1QHZppp>_OP(ceUk-)&t zJ4%`b+m^Nn1Uv+R7vLfg5)xt&5w9U!B*#c4KFo|YRxT6AV^6*CILGJwpZ_y6ju9*$ zCp_BwC+OS+z_wp=9->YCBOdJ!gU)LpI4N`yCgzzfz@Rvn@4_TBtpIf54Dgb_yrWsT zMWe)9b>~IgrUE@0Cte7UMLahkt9UMeiMTPqRNM%VM?5niuebn=-Dp~IhE=uBg-F_w zy3t08*PQ2RqP_P<0&Iv2kQQJ|Tnn%%J_N8W-UrwY@dU74;sT)G2M9=!egTLglOtJ0 zLoN^_B&_;%=b4G%U~b~ztB2p6a%qk~_a~V|#0cq0#SJeG7Mc7`9H^pW_h?_R#lH*y zPRW>X0=VF>I8RlM$v6ZM#Wo>Hi+Z2x%YFP&o+`~D!bcew?E-qt+g0t&%W|y+h(ZCG z=5x{qA=*56JG`7lSmlfah=k7`wj~7MgDl`q0BFMmk_t#5J4@&JWc5L2+;Blc$DFj2 ztgETqr9IH?ydr|r@;+Z({OfJ8wc>2*@>MJ|Kokr?_=abQSJNP4Tcn;ujQ%qIgbCTM z_i>ysB3eJ>hF5y?dasQfs6y%FU#CF;XX2Q2vc#RNs~j~NIZ#Ey2@?~K_%4n~Cu@~k z;iAe>V=f1(c*djMQ4ltWXf}@V*CXIH{(^j@a&kFP#os*q#mde+|7(96$N1|JXtm-7 zODd<310{0!4(;0Nh7G<6&&Dy~gl_ot@~Rbp5S5T9d<jJ76l9XI<Aquj3&rQ=1N=S3 zoC|>XCXVoSF*;z)fr1@%Y5FgO*ZI7(TQz6nKe<bJ4;q^z>Hq)$07*qoM6N<$f{$lE AeE<Le diff --git a/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/back@3x.png deleted file mode 100644 index f087b5ac6c41f6bface6ee307966d3a4fb838b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmV-j1fu(iP)<h;3K|Lk000e1NJLTq001Na002A)1^@s64uu$Q00004XF*Lt006O% z3;baP000CONkl<ZXa&vKNpI6Y6ae5icG9G71so`Q(~`1pzX7;YA=Ux{{sc`Zr`{k* ze+5t$l|=}_0kQoC5MotnQn3gSAfRd7I3C_><uGm>J5I(9bFuw0nfK+*WMYRw8(aS{ zU&Yz%N#N{9cUS!4i%~WgX_sgH8GV-l#fM-*4*-YXe`W{KGRWEiTEG~OF!ypXe^k|$ zDPkau^LiMp%$HN0@H^BB)yFWMGi7i(7k?01h1@WVDF+BcGZadNyfFD({JynZ0tflQ z1YRM(m_R|zU<ee*qE4puod(qIGYptc3s_t;gb<tbHAI+l#dwTKY@1#q7=lR!wTh7n zl7W#1l7*21l8I><BpcHbC<si`pr9}W^1U&-VpQdz+oneey_&Cm$P<%^-}6f7^?Jjg zFffE|2ox5kAyAkYPf%S9V{=TwUu_9%h7e+_J7w*_5X=$OE{r3notPR>yD>J<|9~M- z^{0bZoYxa|;%5EV=yjQ`3VJ^ldlpqAdvWk@Vgk;22Y`7qk)GKn#)CSq`Ifm&9Vq-z zA=7m?C=88Tt&o*uG820~UnvG(tr#8WD`m19y{Q@cA1AO@1ENfX>WJd>IiMJ46G5VC zrcC_k1LyP|b7g$S;`A@qzlP6PWe)uC^jO!Oe^EJSt{_U0NbB1HAN)AL3Nd9+D90%i z6BjbE7l7YBlz$Q9SfMDQCi+t|`^9*x=bja^5+p|SZBRCzI8_P<Ihr5SZd-j@IW`QU zB=aZ(r;o!*F)2--ER-)0A^KAKR?e|fPACP2@>%Vci1mB!8{~!p#tdAPL;0L`(=Wv8 z@42Y0j^Z(&jlEPNk==~JXEBbuXT$`!);C-{Xp8%}XbME*Po0mwLe!pms6?uG$cLla zwW%qqz8g>aNAxYGF~6o(iE)}f#2zbTwHvm$$3@E^8h?GNw7FtdXiHda%SR}H<At0y zVT-$5G(BbFnD4Xk*Q%oK!Q`LBIISr}UP+{jM{IGI3n?HPpHPvgiVK~6wB;j|3FD2T zq)eFzNRE^?8HS1b6kj98@d1bKNl#4YwCnb`{YqMetYIh5$KOOisjU=n74I6x`_siC ztFO~hI*5`?=HhP&g;n{0mqO!er2?1TP|~MN$PUTj(#A43pWyxGS}{)3r!qJ>mD8@; z;|{m5i#xP(O_l11D7zgi#o<!lnc3ru#}BkZR<eP!r44fxtQ6<#tk}YlRTN;S@?)J> ztavCOO4d7E8o<Y?r;aFvoz7=F$EjavAXgM)CPId2M-LTLMJ+7!Ub?m#LVhN@wVu#H z1W24MCAopq2i%5=b!$rl*@vu8UGG@95T9iD?Zcm$DXS0O248wN%6_$_LKb4fC|{z_ jlnwwhzZWvvT?F#K%-|c<YAfB^00000NkvXXu0mjfyyW~! diff --git a/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/Contents.json similarity index 73% rename from ios/RocketChatRN/Images.xcassets/Icons/back.imageset/Contents.json rename to ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/Contents.json index 3bad3d0c6..ecaf3a2da 100644 --- a/ios/RocketChatRN/Images.xcassets/Icons/back.imageset/Contents.json +++ b/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/Contents.json @@ -2,17 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "back.png", + "filename" : "eye.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "back@2x.png", + "filename" : "eye@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "back@3x.png", + "filename" : "eye@3x.png", "scale" : "3x" } ], diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye.png b/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..34a1260773868e6103b905445ff95bfecbcf7a8d GIT binary patch literal 631 zcmV--0*L*IP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0006mNkl<ZI1%krO-oc^6h7yU`881nq9{bBVg`Z^nIh55tcLmlZbGY7i@p{@ zAQ>*Agb0K-vnqrnTFkB%6SbNPA~%hhMNA)LOhjNp4Azu3bno#wGrV%GsfBHQ7x$d^ zJ?A{<IUkp3=lpL6xDtSf@R7lA%o84ky-P?s)sKnaLA<qCW?wk=Q)U)@_n$uiL;aDH z9?3M3bi?>VnBPDu5Q$I+#35)wz`wSL$I^?bWJN$_6&j3O6;G}M;3Km&U0=O-W^V4$ zH-A7Z77MQAf1V-n#z5~NTRfR|Qd5TQCd0n|@C}qULClY9t>B2`B)=M<(9y_cBphd^ z`<-pglZiy4SO#97!TT^;aWk`MUsL}QU@!Vbt~^1Ohw1035tGdT_C=!&QgHKnx0r9G z7wmCk>m3N+BTvq9z&ep}QqL?kuq$z7f7P_F_M9I~nJE|*<h%huA5R-yWqqLeqQ-(y zT<=x-0VLWX^rfa|%ha??DR_6vK9#@4#&xFUa;54~VkiN+fXs*8<<(La6RJHkx{<%X zX^h5FfJ;>b)baDD4@)hrZM!g(OD(Mjdb+#Xlet{3c>LIaonQT4jS4!@_yYPD*P&#y zSvMMu?rvz@{{SVOf^90ZVBb}&%_*Zi-`endO#60SRnzSJd}2)<%^4aRu3P)HGK!_V z0s`%ST^kdyWwDvCI{Z>tmekI|SZwJ*iF<JS_hK7BmCAOzzn&jwN8ertHUMi1@HoPg RtDgV>002ovPDHLkV1i449x?y` literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..611c8aa09a090d8781dec9d4eee848338e7d9e50 GIT binary patch literal 1307 zcmV+$1?2jPP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP000EiNkl<ZSPAV{YiL|m5T3can{5*dH5HRe)Tpf}{gI??Ru@gWGy#o9Y=sp} zRjidzYzkTwe~Cf=L<s2*tL8_PYAj+yMWrQZX}d9mHLs>Yf{zx|NSZ|Y!p1yz?>KXB z&h6Rk-Mj=TbT1?`=R0#|zB_Zyxw8Q2C!K+G2GSY0u`__nef^?9XtN1a0%Qh&a03FZ zA;fI)heVeM@FFV%fJT=A*xuI_=~+&!B@rwx4&~0Exf@K_K|t%45)c8;fdPknWHfen zM@AOAc2NX_!AG(uX2#!Or!@qSxmf3Jb{ue=@dGP;neRrU-(GUF(Xj;y7H!^AVIqAD zM7jDx(Gj5^34h?y_8N%8CYe@11C4AG;<-Sukq93Epdv9(SdTbj5Wd*g)7F}R&lw~x z(k5$bYmKjto~Y-Hy{f?+1uqcN2Oh7d`E)dLPM=Gq7d{xuhZt1>n0wgYZMq#3*uSl^ z>@|*O>bTNf35LVrjI+OwHWSg)%8=7Fi3D|7{?!c~9p7Aa@Fgh0V0h(ZZ1iP5TyJr9 zSE;3lczAt&&T}m-Ez=59GKrv_xszY=A$Za;;!+ZLcl39k8c^6=Sr{mJoKN#7MBwL= z4j>vI@yTuC;GDF?ClDyTYs#cg8GTsIaAm&UR=M@5xta7R10^qy#p_w$sm5H>qnX~^ zM|(Ptop&%7Wn^gZY);;teB01tJe|iRpJ;44Sdw?o9mj_U2gmd!LqmUDx&Pj~o2RBB zpYej(x%+<p^|w`{=Lf&jZ4G@;P+Te{-REG4M{dsYY>!4;CLC-Y#SgxwglVF!u}S=l zw@Ol_B9Ta}ue<F9K4>3mYxWfewuH4Y-%PVlAW*i3-}*f@=FI(aQ^x9@;>f`kP~!gS zj3g5#$(Q;|NjL*i{`L8}ds#XsnaDg~bFo)A1ZT{dTHd&~3e0ac;q_v8zQbVcIopTx zKQ@KWI|EJOpu4nTg31RY4p~MO@4;bff;m`RX05!++C<<@ZjT6zJ-yMkAJv?zH1S|T zptN4fDw(s$ne?`+E#L-s+(yqtB3CvRm)67yjtF9L0oW_LLr@0lG06N|>8T{Y%L*{5 zZVIOBz}lfnhc(qwSKMu%ilI|tgW#B2X(GNapEosjm)r;}`kCKWVo6NpPUqqf^clWd zJ{W&lMnpLivGFfLp^$5a#YXNq<!~W6pRL4@SbRO@Sbms;#bws1L$Iss#6=Ek)m`TJ z!Y#i%W;Uiuy<Eb~^5m?a)Pij+TNexQZO4FeHO((mV{@?)hoB7myT3ooqQRb$|Fo;9 zxb)Db>T2IL%+}<J@UEa|=OxMH#K!GwB0j~p#L#><oat(7(Z<*IpaQp7mc1^Y9W~~y z|4jV!Pp9Pbq%b9W+uMiPVL88bHDjGz0sdmhA9M;Pb7G_Hl@wp%Q+z8-VoGc^Rx;^^ zmkIY~0j{!>H`m^h)!5qFI;9*eMOIW)_=hk2vzx#3?<~7nPyti5TU^pV`EP#);pdC( zjHMHgAyt_~ukhx+UBwW|8CrU~r8`K~u=2i&vt0)Vh)Toik%kpKcEbws>^RX{{%x{} z%NS(4hxkAwHYWeIVbw`q*Db$J^t%1gq?1(o|Mjy|#Y@X{2GSWwXW&N7z`u-U5u}Rn RqYeN7002ovPDHLkV1h1yd+q=L literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/eye.imageset/eye@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d2a62d5e9aa2d8402d5df0e16b706a9626a554 GIT binary patch literal 2067 zcmV+u2<-QXP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004XF*Lt006O% z3;baP000NdNkl<ZXa((BYitx%6ux)1WeWwR4PpgM!AL+8p)Gbx5z5lWYN-_nRwQVm zF@h#40Yr>MB_Wa+1=Q#d5r_#ALki&)D2m`xz}j7C!JtMU1`tR~p}Y#TY<I5TS-S1a zokwREP!nd7&D?ul_k8ER&n#o^<3_-ZfExif0&WD{2)Ge&Bj85BjX)w1;E5<X(J3h@ z@t!%~lBKGuPi1N@7d%rimd=Gp7o4Y)4V0TuZh{kdi{lDYLW-gU`=+HFsI07Pb<$3} zGPe|PUS7#vE$Y?DjEUy~W()u($LkQu!>O>~tco#Zb&AqsT}@5pr9|wQ>D&^)!}G`Z zcpHBU0Lz#VDP|2NOyj%-PHq-S;**2byMqbaX;-`{z&UwE!&EiAPzdq#%{t;lpL4!R zQIg-Qt=aLb6L~Y4gaBvx{k>VU`k7$j1sHX1gL<od-jXvkpP`*51nX|*oCOV|ov&g& zm6-<ufeRKgmSpG7wwuWD6%<AU`vybzeoL!hz^SwFY=^>mP$)`G?-X$`5C}Az=@b_i zr#4<_9fpzO13wp2qX_mh%w#)god50N?8Vw()y@u@gMwqg3l=O;Hf-7X5uBO>yB2!9 zm2<X9K@afkA=~yZTNZZUgF&Rcyxeo-#F;{-ifQP5S_FF<gl-V9$n(V$OAF`0Kh;7; zN49WWC&OrqIeqrZYD6848y^@63&vL{Uhl%Xz1vS4B@(CP=Rc8twe8wmCfFMQo@#1| z^L73Dq)v0Pm30Z2wwl&R^F|Cazgc52upyay=Y&E({$<9$RkTr~iu+y-x6lGP-OMKZ z2zWg`Cv>%i*#aI>R@Ng@e=&eYa*d7fW`(htb^EGT8hPfF?7X6fMdbRIjPpk@RJ~ZW zPQigH&XU&Dg?`#$uBE4D<rRz<DqCST$1%J^o{YQw`!{dCs@LkQSpo(~p6wgE4(~~w z;_W5Q4|QYRCM43UIli%DB0~HChjsfk=Ke0G@K+AhR2?z2ClN;Y{e9Z5sB2)OP+}pL ze0^PT*JQjgD2)#~$^6OA^V0%l0E-Ci?d9!NkO)|6sW!N4H(XgPw~8JgD^yWK0g-uf zeSaWu7IStyd|4~=$Y=6hrpM~0fQRQ6JS$XnZcHflM${_1CucmqXU~@NF<K(;B<5LV zswY@lM5r4vYzLe2HAGsVCO%a(g>z-Oh8!)D?}S07Q{4cVh6@e^U&z7$yASi@nd<6_ zYcen1dU|^DNlP7o#&-0zC11m!t!VJTzOQ1>->M-;i-du&$aDkXNOR<K4E}qxf*3j{ zl9^Iww-{*UyDFc(7#?aTL&G~ecU+O3OpI4iQ4vY?_I?hN_fU*RZ^A%Wv@|N~0O#cT zpM>C4tq{P5JxOd*C={sI((TH$8r$*JNSo<!)9MJ;Hbq;vEAQRA>9QwDnS_N;H~I(* zVbbdA0INcstz|~b3SYGUm)*4nx($K09;?MCYoy<g-k{T(?E_~EYy~7{ZFS%%y7dEz zjM<^i($bQ&6_j=REh2W%lQr~17OaxQ?5j9K52LLo>(PS6v_R3ErC}WH*@!v^E2+oc z0=R<r?@~q*7(6Ir$>C!SQ?XrTYgj%_naO~)JOqrZy$&Bnu;Y9L?*@-kpg2Fw+U7Sj zwRIZ61if8PV`C#`p#7s8(hv>l#1W|r&Ejnx%}E6(C?{gJG6~p-`l|0;YC@MZ&;eGs zvP5<Qci#7NMix9I)9vaAb9{5a#8|vG$Vc*3HU&&ewKN^z+E8E{8v0HvfT8J)M8x{h zqf68Dbn6<Ojjg%PIPusZ-^fSuRcoEF5GE~62bdV1o}M=$*r*l4WFB(4_43*g)2BO1 z%F#t2dN$S>ab6)^r<V!xiF_j;wJi_^!lI>7*#MZ%skl|YE(_8@JyQ3_O1hjIcxD7# z1dt|({|HJtr0d`zU&tr3O9WvcEV3C>=NnER|Lwj3gHmDWF-c+Axr<k_AIS7=IC=7S z&C)ALp;~|HcvJrYgMP-mnuw~ioE5-&xH6$GSXF1VsHf!Tmv^skYM`Di*K?4LQIwAl zhN?c5=~OrLa7<|8_;K&hRV!BScneW>EnL6d?3~&m(_V<)j1->dWO$Pdhb-yHcH}y> zO+KJQ%48n-TvrpAC(~nf40Y?rHUYqS1FoDe9|-Q=Vr`+5LuX?;E@Brh=r~j)k^u0H zDaBQt5&-vhTE9^O*u)b6F=Jh&c#yFBDkZu5yVcd-H^p>r$D49nE#Yg6R3>Ja*+<Xa ze2OP#xXUCSXP0n3Uh3tkOS;M_#cVo#M*}Xd%tnvS!XfQ0Q@uEnc&3Y%Z1m{SqmkF9 zzqIzxBgZIfn2(=46}(tH{B7*|jEsJn12Qr*&o!JpaZ{%)`h1g-kvR`GF??AG+SKi_ z?LJ1+w3A8;XDna7+;$Odmp3>bqg%cmC*nD$+|*XI5L7%$FnXJ@w8~gczW+frqWS=i z4*TPA!5C~Kj*#ExM7*}~#6Gp~W`M`(UNm9Rx-s85KAkdrIu(>~uuQgVo2K%=`>93S z`W^EzO$(aJcg*Kf8ThUJAkJ|B;otr*KZwh~sV@KJ0W)tP$Z7P66iaJ5%Kyn<9;jXS xaU<YHz>R<#0XG6}1l$O?5pW~mMj-wO`~xy)K}>4u)x7`!002ovPDHLkV1gju*=GO% literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/Contents.json new file mode 100644 index 000000000..da025da87 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "eye_slash.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "eye_slash@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "eye_slash@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash.png b/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..621162a17905b63a6d78312c2105951edc5e0ebe GIT binary patch literal 820 zcmV-41Izr0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0008(Nkl<ZI1%krT}V_>5S}@Ab=#DzG}IKelne^gwcQH*x&CcXf&B?V^-vV` zRQ3n;P)aY6K@q4AQ6wZt(L<(SP~@r@>YA=ZAPJ^Yq4i)z>+jw(&AH2!h3KirI$X}r z%s1cp&dgkZe{N`h^I~1sZ832vbqUF-$y1-k-zYBIp9phxJuWyS_oJjtKujl~NCYuS zNIj7xnuT!8Oa}sw0jNxXsI+)~Bh1Y!O)=&duLJ|~Fc2-H5ONX;B!4>)aDySRf58Ym zVApyL#h!t_juwkhSR1uE-37(Q+yYCdqe#>$(5A<)c0>>PIurf<T}f-#L^~LE(U3+f z0>vVNhd}%Y=RoU_?JlffMNO<|LZG&Hu&;f{^5wYmPm$1uNzy8mvJntQ>_Xc;FO91J zc#KsY8t`>KQg~CLbGx2FB=55_|8kpSOE{SVmG3OMi-ybvDW5QbcV(28*W2s;Xcy5J zSVWHj(2(US+N7|i!Yo%oCzEYPO>_Etykp9thI4CC?g|GDeg7$ICD2I$SW5^^eqZP7 z5CXvE(i0X*zU86~5A}EDn+iE!8<Ef#PG$v62V^Ugoj}A&evh9OJ+*vl_4&M$faGUo znd%%OM7+f}cvP;GQ4O=&(r5sJJk($x2P8^K_qc`HLx|9v<t{u+1f?Xzb!9QzCL=BW z=E#SsVh*Ttx(nYC;B0Vyp@o%86rzj_I>#yxFlo14M4Yw=vt0#eSaA(s^331Yaa-BV z9IB1S<B9tEZT1L1{fi`eXjM`rKYN>=7Gc<g&-ZdvVO0STj4C3k;8e8PMbyFG-Zry+ zmIxIv$5n8i$!fTHpKCVlnh^|MLKK7icZ>s}9Z06L1{bHNhyxdy>_+*n;;QQEYN_JY zFbUZpnp<DhTb0aM7hm~)Z0a&U`8fAwY6xo1Tx6Kwutv1o>j%4Ed=B%O+a-mZk6N~j ya7)|?2f5uPu|b3+CJx3pj8U)GI~VT%zlUG?Dm%RUE`uci0000<MNUMnLSTYyIC6~u literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6751bad025c8b708ad48c34ce2ba768283e5a6e8 GIT binary patch literal 1886 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 YFMW{?zgx15ZvX%Q07*qoM6N<$g7o!^82|tP literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/eye_slash.imageset/eye_slash@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3b415986d384a0d46948b40104e6ea54440d6f GIT binary patch literal 2886 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag.png b/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag.png index 890f02c737654c36e30de82988a79e0f89689d35..e4a79ec30862e61bffd04c8b43b212eb739fa84b 100644 GIT binary patch delta 137 zcmeBUoXn`$8Q|y6%O%Cdz`(%k>ERLtq(wlOgAGXbcFOWjR1}W)@^o<wu@Fp7aA5u{ zw)O}Ap^QTkF)^=Z7=#3A82sQ(QBm9D!O6O+TJmsF%*OV00@JNl?Jl_D@MVGeT>Bq~ m3rv<zkX!x2imhIUnPKTBjl)*5i!K38XYh3Ob6Mw<&;$TLeJrm4 delta 132 zcmbQt*vF{Y8Q|y6%O%Cdz`(%k>ERLtqy<2jgAGW^fBv61QBgR`)zif>#6mDR!GY<s z_<9@WLmo~VJ~^L!G_+1U2*_bjo;BHYLEnzX!-f){M0PVARmy2>S;H{f=BS>8X+vY8 giL8M^z#Kk?4ZK>?U3(iQ0u5&HboFyt=akR{06U^5+W-In diff --git a/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag@2x.png index 70a5b3f63cf4585307e7952defb483aca69359b7..d76738e3ae23e5316c0c1a574b45f3dcff568d34 100644 GIT binary patch delta 218 zcmaFB_?S_#Gr-TCmrII^fq{Y7)59eQNNa#F2OE&=`L`o?qM~s9EKe85kO<DV(+&9= z40xD1*QX>sNaXSPBXsSQcPgtQ|M3v-(#~_4tFIaTJomcpnC9_)S6AHKxclC#e-GaO z6uF_w=g3jUS@L)3^PuvB>;L9V(z{sEbh$dTddlvIDkZxlt|>=yI31;DN+@VJpfMhC zeo~uga3n`kzObfokLR0Z!p=2EL^L{Y3N@J-86FX?VboTYlghm}yB6qN22WQ%mvv4F FO#quDQ*i(Q delta 215 zcmaFN_<&KdGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBk;lx~Gd{NCanc$^ph_ zx^ae+AKE)hMa-I*7#5V{V#T*KqP6qt`Ib;~Syp#h11YAS2UogmFWzJ-Zd8ltn)uLa zf?ZFnq+j5oFPjf+mhvlZ5E5v2kZJap)w8tu#csp9!GM8VQie}mi=*%bE2r?%`GV6K zk4#IM@=E@LhD7Os42~Y%HV_FUsuK=e29t{ut}rfEWMJ^-^y>L)eq0XdRt8U3KbLh* G2~7Y$NlKjn diff --git a/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/hashtag.imageset/hashtag@3x.png index 8017c826304b7c6fdc8f5b684dbc397f44b40c3d..e083190f9348dac1cfa45ea8a8cf09829911ac9c 100644 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8Ea{HEjtmSN`?>!lvI6<9JY5_^ zGFacvG~{bG5MX({XOfny+%%=oI!`+W*5hKuyB2OKIbD_BI$^Jz`26$Vx6AkLiN9?X z<-d06z282PuNFOS+dW~`uPFtlJN1f%-Z`y$6@2LGlU-*#cW|#<b-wglf0XEw^O2cW z3wQrhsWEr_^~d7Sbbrlr`(DkfaM*3T?oyt_ts^sZIgc-D;qsK=QcLqbv{7TBlTcez z=gmn4I$kR#v@A?W+NL7YEu^KAs4)Yov{(7fTg5G%hS86;-nJ#*ZRElbKsQXv{Rh8H XtDKW%@qH_xuNgdD{an^LB{Ts5&SHNQ delta 305 zcmV-10nYxj0=WVqiBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj!@fAC2} zK~!i3?U+Fdf*}-yebTkMMyrBWb*5TGREy{u-AluryEi-;OqhQqI*vHslV7w1eD~+) zRBE~O(ro#BJnXK0U$i~qpQDTZ%RFshHVF|Bfx!e+LW2PgPq+3H@m=b+)Vl9=+3b~) zefz$6JMM3{$GgTCo<CD(U^av0e+g{bt<q01e#m_9ril9+vcSl7m+ilN326gJi7+)H zz)TnM76BwBrbYyq=_1}DfTYCKhyXKP#9IWAl$aV3V5W<B>s<&*iK)>UV5W<BFHb=4 zLI`G0GxF}Vd<kg-UU{&`MSz{K=Pv?YLhSM73H$(EoNKC-q^lhO0000<2SrXqu0mjf Dash;u diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/Contents.json new file mode 100644 index 000000000..71749ba70 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_facebook.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_facebook@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_facebook@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..b362e2ffd0d97236ee03ed728a381e3eef90a69e GIT binary patch literal 498 zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP00050Nkl<ZNDX6j%Glh_@SmZWf#E+Z162XzZw5w&UMAWY4st2b!9a&IQQzgr z!SJ7z1({1Ko0E;@o4TUFeHA&rkH3EYWBT;%7wg&UuT?&O{ml<Ei);(xyw#4x`KW0# zGBRqz3<J^4bIzSTaOSBoOpGiG+{|Up#QUn-zzo4h1LJ^nP#B{xK&&p3eZb1X{DX~^ zNeO1b-+%v~<aHhScKgvs<$wPfnEwC&4-X!Y8j^h=E6(!_S>MeEA8+4y@Ieh|5i`(m zMwrDgnq&)DSQ-DqG=u1$fBybQ=A*MowgBA#LVQN2^i6nO05ZVAMCxo!vavkGu>Z`! zq$!AG@b~}!8NR~!VdXpjy!-S^0>&pQlG#|8{xLE#h(I)91T!a4juUF&kN2N{vB3-n z(Nqnh-+%u-1^NcXOrm`7>irL{w;z9;0lA2sm6?r)i&YQA27$kS|2_He<<|=k`_7|J zpMaDyhz$co#Q{t)h*nb&xIMkXRuv|8{^pwlCH==8V0?5M#XIPd)ZmX=Krj@CMGygN of0_Zt-%OyU1p@;uEP*sz0J9{8$+rr(hyVZp07*qoM6N<$f<P|kW&i*H literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9543fd0f48100d63e681971a6515240768ce66f GIT binary patch literal 775 zcmV+i1Ni)jP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O% z3;baP0008MNkl<ZXa!^R%-tsX^Vgplj0}t({~7*sF$@6!bn7>uTX(Rtv1G7-91nDJ z5Kv$UI340dXg~)6-Oj)S3i%=9ax{m6+|D#qk`0>M!Ca8rnXpL=C9zQt40LR<45S0} zRYk6OSjoIrmlt5>;bvuLVqj$Y{_FSe??3+i`S$bo-!EVP{NHu*3E!b}&x~-nb3i;` zXC!s5G+v*Bi=9Oa-C=?Z>?lGU9LxuR9zYR8=Fr^(l}UyNUCd<cfR129b_ls_x_Thl zU*ibS@%H387Mni0l|rI|oG+t1RZXxtf)X*hd7wPO;5yKu9F#Z~n_jwkKu<+T1)BpX z6{AZYkP_p0!pzJhgU7Ldj$e9tXz7kS(hr|~mj3zs54=_U?;iu+JVO@`$cl5n1v(z5 z2hLo7b)aV2DHl8*#3@CWBqT1#`5mVVfD+4g+!ewnk57&+9$;f*`iIXEuiyUQ!zYhV zjxHX+=Kzr0-+%web_dxS2|0>h@}nN0S4iWshtVm06V-b2H7Q01to0=^ic4l@Ms8*% zMoC<b`2F|az5o9h{$i7_m~!&-#hY*F)0~zN=3-)FWg@x8Wo2ekVqnJRd<KTMAAa1# zE&~xA?0Mkt^EclxVieg!gW3cC{{Mga_wPS$WCx?O2ek*je*g0d-NESmLG6Jz?|*zj zcQ87CP<!C<i_gE&9gNPWYHM`Gt~<Pj>Y@kHEzwsKW>%EqwLuq$@%Nv8dho-SUl@I4 z;E04AObsrYsvbCU{)HhBW7rkqqI4`XL>ogKCNOi|b@kWpze~XQq|k#p2@&IwQ4bIk zO0-ln8UwTpU1H20jR9gpiI!?cV}O>SON`m0F+fZx(NfK54A3%ki7|WV#{g*I1Tj7x zjA}q`2Q4+&F&G_3jGI7iX96u*0V-ZMlwtzv)^#Aa0{}TdwN30}{fz(s002ovPDHLk FV1i?nU|#?L literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_facebook.imageset/icon_facebook@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d01570fceaa77225b3fbde0d854f9019b9c3a7 GIT binary patch literal 1104 zcmV-W1h4yvP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000CBNkl<ZcmeI)O-K|`902h5W_5S{OxOG>Q&TGyw6yRLq4aU-AVCpy@FMg9 zcIXg<T_Wic-J(OM4&CY$RF|lOqL5G!9V*E*+!R|gm0ex;V|J$Zw1+G1n>SC9nRWgH z@@D`4|LpGn=bQbSVK5@gnH#Sv^$2>PW7L6ky^O{jyI}kq>u3Ob(XDq6JN=mAXc7H0 z0V!}SN~*>&o>x5Rh(c!$;G_`J^+IZ+tn5}P@(@CZ+9-~H%`ut@<n>rF%0mtz020gs z00JO^fFKPsNC1=}$fs30+nc$VpOYC1M^*3AvYMMnXqj7WAZ>ws`QF*i_R5it);+kQ zG`Gs-!o>t5_x~SriRwC9)HFS;CK8djsz)YgmgcYDA8cm@qA~4&%8Ih4d%Iglo9cXR zq`4D<20a)f55X&PxiXN)jZn?r{87O+>(Xfjbm4UEaL>iYCenfF8L+O~P25NupnE-S z1IL?7J2uhdmNrR?cd_nshlZ@cp|Z9IYC2Ff(slMAeZ8?{u|3e;E60|I40(CAX0bI; zOa1OI1^Moy*3hgzs;z;po^P195{Evvt%2$)c2!#qWZSp-%F^5kMZr}vK+%{w^6bs{ z%;2Z#eX|RZqDVZEy<vMztJx4U2-p^=vDOzL&)YQ6d?+@2>Gs<eRn_VZ`jt-Eb{8x0 zWkqGWx%2p=o8Wk4wlPy{U!cOQgqa3tjjHP3zmETHHCr!JXImihvxVtCmSgI+z1!Iq z2w~GcXeq2l%vZ}*+80Qs4~%q~a+%tl0VLD0WGw&*zyJt<1OkFI%pd^}K6UNow!H)J z9{XwE$@h6VZZ9uS<9XSc#pJtKg;5R5ks}v>LgDx?cH3xt^5R?Q_0U9zQB88rlJ8>W z#W~e31(zp3k*%zgBNxTwgC#xeBV073_X~@X3LLkKjrl`TXVN(iXd)0QO`0IWRi^<3 zBGH7@Nve(lipI3*l@sfP^JcBUQ9yIS<%PA@&8;~KXlf=b{jJ|oKx0!ui62o`XPBda ze)xk~=60;LDn|j0PX>K!t(#l3<dgK}zW$giLm4-EiZ{EOCmZ$`nmWye9OC)V`)Iht z=>BMKBCsfZ#KRIGe_&B~IA<;x^@|#2d2-5K{O43ic%Q6ZW^~jpCIiE20f<R(MgZc# zurL5I3C;*W92gb`ASS^X0f+;`!T`i1I3oaYU|1M{m;`48APx)*0}zwoi~z)eVPODb z5}Xl$I4~>>Kum%&0uTp=g#n03a7F;)z_2g?F$vBHKpYqr1|TNE85KmX*~Q60nAj-v zf@UC*T7cRp^lEP;Eqz)@>bu-QQF4(tYNOCg;VE8x7$f`~b~o}5rk4pM7W4{u)aD=c Wg6<w01+0Pq0000<MNUMnLSTY5m;Ort literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/Contents.json new file mode 100644 index 000000000..650749f6c --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_github.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_github@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_github@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github.png new file mode 100644 index 0000000000000000000000000000000000000000..af76b3fddfb8c8b5865ab3219f86176651623244 GIT binary patch literal 914 zcmV;D18w|?P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0009?Nkl<ZNDY-$O=uHA6rP!FvuSHZ!8D;sA+&;MMX0yly!nR}Ek!6r{6Q!b zyeX)M)=O_56cN2x50+k4tlEnT6$EdEDqgIGSjp}N3ym@Dn%(hx%kFlPCN>$Eyf^QC z-#4>we!|&*S~8hTIktV;W$YwiJ&dzX4=&kH*l&WdSuGNIzOu6Nqm~S>mgws0>a^F_ zZ%ZaGBCl1$C^3gKJ{5^Z$1|A>O<dNtOc0O92c+vf1**Lax&0u|g*IXs#tRi%wz_yc zc2&CW699A-RHv^qDbMX_Yg;Y+`SU5@gkRvV{23AybI?&@&xhHzNg${b$HkYN3BH5^ zjB4(e#hZ|GaWBUBPA>Rm1Tus{b2#VUsgq9u$_d6Vc~~y)QVdOy7HN6|`k@Vl32V-! zT=;BRzYW8B+^k3U>0InR(0edym{vD+@+n5StYu9RmN=y4w{~BXaXN~B?Tuw5!u=3j zjAc#pL4dBuCStKMm&yAI)@hFDX+h^)6(@k??y3T;%aua@ssL)FE&NNgndAI}VdQ2u z1NC_x2V50R+O)|%Y7m?DRvkCuSK;;`=3oCnNy??bZP-?Fp)GLKyrUY3Nx^mnextUM zOWF{ZIaNqX)~Aje@xeV@j+d6eky%uOIL`y=bh_cMAP%^vR4vjLxS8+OAnyC_VxjPG zVq&7KbSkFOCoFM@tL8|Xr&6h;y|KQGL=yrZVY{W2amM)q3V365bZia+IB{Fs(9n=J zKmYESbonGWhbj=Ih#pO29~g^w?3qUWh9NrFD%pi1lQUS&5z1lGf@FN$G|f9S4jNwG zTX^1XLbx@Esg`p#ZJ4<cuM82r<r<P}cy5mt1)IbhGe}=R1PHVUAzrIw@->aUswIx} z8Z@sH&YOV#iG;?6F{>?IdEU0|lwp{CLTl<pPh_*%F9cSb5c*ej9QdR`TEV|txRKdx zZWfnr5C8|uev?SVu3&{l5IX|0YWw^9ZFNjOiIaw><tM`lXpHydB^T^03ezTC_6YC# zlIxTfX)}F%Xe`U}_Ad;eEW{-ZC02fmDM7RA(U$#K%`}E3id7L~`FuW@phQ^Ws4FMl owvCQ3N_D&z5V;eCsg<YrKLm74Z8R15EC2ui07*qoM6N<$f{<^cx&QzG literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f92f531e6b979ff870d33465abaa97acc7c293d8 GIT binary patch literal 1997 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_github.imageset/icon_github@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..de7533292c2213345b1a6ab7d20a8abdc948092f GIT binary patch literal 3032 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 a!2bc}gBuK{B8~b00000<MNUMnLSTaP;^VXc literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/Contents.json new file mode 100644 index 000000000..9caf40687 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_gitlab.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_gitlab@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_gitlab@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..908f0f31af7f51068551c58452071a7b105d17a5 GIT binary patch literal 995 zcmV<9104K`P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000A;Nkl<ZNDaMJ-Ahza5T7~M-MijhzuMJG0~2&t-H1@=Ln<YWkgzYYGAjzA z*Pxf^&6gf}h@kf%=nLwPD5<EZh_Z6mz$AAyO!I>@weFqf9KE-rZDcQ<hn?Td{AT9N zoVhH(|2)(d_YX8ychQN4z`xcVY^k*dnyT*8=~|y2D|96_?lck5_QBNfF5SKyY=4_+ zCW88bzL_05e^CJ-Y?V$2=A};jJ9bno!n}0(UIFTC$O53f(m_NmOIvjVGD&J~HVI(& zf^Q$SwHYqYE0BIPT+c0r=N*)v>i^c{lKv*sa|1hpAXoA@M`3ELXPX=26>t{D<2t}z z{+OI4W8opIamie&0Cjc>F1_DNu7I;wZ*{Tnm!?LGphoLiITw!^rLGDLJ-l1T&8_kX z40xuI^u)V*-IfUtJsR1;mn+bH99xoZTEAJ^_+bI8Qm1Zi6z)r`A77TeFV$GRNw+P< z!F;E9_Irld6*gZQ9;-I&>(Td^#2IIT*69h5V0bWLMEK#nw_4;EU>8@~U--s_x?SXB zH$}lTjwNG)ZpJq<p`2nAMn8_|M4n=i8KgJ5O~-){bpMvzgwGVE2!F6qx>;E(9QvVN zoQbPp9em`LY&}U%A&u#}jzeK*Lf2(1&mgUGvBM#!RkpszB~cdDU=$y?x|F^ERp`2l zIT`u0c@Wyc7(O5aHfW|jvcPlA08~KrPy|ms8$xk*5Z`+G0x)yvjeApNS_w~_JZf0N zdoDyr;y4O8i->d5$q$NH232Tbze^5=?awZDWljN&x)?3!!%~cUI>0OnJYyW~Js~(T z86CZsg<)()z+Oq>BDqiv-!TiPq;7_&OiKOuLR2nwH1I3LdE7ubN=HlxpKp`Vk-Q>x zZ~d_S-Ahqq)*!+)=^#NBR86lG1}HTxNJ=b^-=YMIH4^iqcJsE)7X!R1@<O$E_^pbQ zey@O3aM$Z8ZtElnqn!&)LICPuEp|y?Fib;I%99(RPYOt%Nn4o9+k}UB?@wXNi)rOs z_~B*9eCSTB%$}v&JhmE4LJy6TmF_XrO-rhr4_E+`6oWWF^fSZ2BiNqk&y;CV2RZ={ zCO;T!insEUU!qEifFJUBE&I%Dc+a=CctKY(|DsW{di$S}%Y1+AKrco&qKz~Q=cl`P z82ndaZRP*I09?S1<UO622`{UF45VAp$d4qRbC5r<^>`5vB)m1vl=#2degbgSIa3xH Rzk~n)002ovPDHLkV1l6b%V7Wj literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..92a633c84a06fdb464fba9556c5dbf80f6756941 GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_gitlab.imageset/icon_gitlab@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8211a7d1d004ad0dfde526f15ed12ac9fd883e GIT binary patch literal 3435 zcmV-x4V3bUP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000dlNkl<ZcmeGkTWnRwac0lC_xk$!fgeBŘpzJ3A@38bVUi47rXLLMaw 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 N002ovPDHLkV1iwFs{{Z5 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/Contents.json new file mode 100644 index 000000000..b314b6003 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_google.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_google@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_google@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google.png new file mode 100644 index 0000000000000000000000000000000000000000..776775448747acde0efe763600a0f7655896c3a1 GIT binary patch literal 928 zcmV;R17G}!P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000A5Nkl<ZNDZ}BO-NKx6h7z8pUw>aM;0^|D)grmjM|Ts>F6pVvypI9wvbv> zNQ+PxiDe1prrNj(5?bi!CNc@N9|%$ta$_J_m}dSkqvGE<gY$0ZzTrKe&rwnFEZ)24 z+;hHj-}k+HFTf5Pu7}T@PNQdfu!u2q0AtC3n8bjYfWa6d^Z^JhMxD?U`TpzVS~wva zu#ysk=lA!!4B$3nuxG7e9!JC(dep{6*=o?`@@sQfHJHgskM$vICg8K$<aK?-PO}*= zTHkbytMdf4GwH~*EduM>G&q6KO5GNdZAy*D$9g%yh-i0idOi7xa!h$6P7p#XGUy}j z1zJEV06QnsM>M^Si%uvAMUm3L?Z_x4&R5Vvg#l{vFfQ8s6kVU@l!i25&Md2E+FMNv zOCa#VP~bdY(t!2sHG4akh8J4)MT>qxiqT3%1T2ng@8(~%Ws@`r%)0Xp2d84J*ZNVn z%PWB)3NN+`&Vhm=i%`HFU91lxuKonmk*Vo0gZP-owri3GBvz6FWDvn};ZLvLF)*gY zRD<m5Ig)B)BmHi4lw0bgFF;^6P00_9zZG{kFA7q$mGTX0kfB*=zyOCd`G+<Brd@_G z!HXmf=$9NI9a4C}NBgLDE;S{saew@`Lf0xC5Omo*Pi;i;Q4z#v>KJW+5$*>!ngGoZ zfc)Wr70PDq_-iR57Lk?F{GAm=<aAVof7Hfu9?cif3A=1mY|@FJc|h4{9TSF;2eZeb z=2@^OO^GB>arc#``sK>iqr4jLnLt2nrDI&;JP3+C9Tk=|J|+x;vj1BspS4#lgYzg8 zh{u=qhRgS}8l6@iQClUe6i&XXx*lM@cWQ8+Lnpu!Iam4u?(oAdt-<+$Mp^Qt{3eY^ zFl=RreF77g=%+}ef;?g+S?4<d;bXTzSc;X>3B0qt+<c1mfkc|pfX`+&I&F)hNKHbV zs8V_82a<N-<2S+JO&Kxj@kHxA^IthrqDXeW6uO24qa}m7O9IL9jowT*2j2MSqk_5j zyc(R>t!Tgl-IwY;#}i|6Q4q?A%uya&*AV@5W!6RN{fF90PxoqbS5Ty#bT>g8)Uu zw}bOd$^6m}BX;=()K9v!33^jQSHWwA5-rA#`~Lx-!5lkM9_pI_0000<MNUMnLSTYR CFtJPk literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb517cff101586324d6b49b327ef27dac2a5399 GIT binary patch literal 1852 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_google.imageset/icon_google@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..02342b216c6be2883c3db6ad4a0be67a9c96f21a GIT binary patch literal 2844 zcmV+%3*+>OP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000WpNkl<ZcmeHP4Qv$06@Ih3zB}I;!x>{pg$aa0L|Q0~;va~q4LAgoxJ3dR z8VC>xnj(P&2tfi;N!ma|(w3%e)GA68wX_NL5g?%n!PpoQLjVh*{s;twKnMiz8S~?_ z?{9aeZ|#`e-tFG)?yV1-dL(Oi=l#r^Z|A*vGdpL1zS4(49|GNo0O>~Es;X~3QRJ3_ zp?nHZ$bgMS1F{)F7GWf-;|fdwLVN(s#~5h=!afHepK}aO2{xf&z@EeBR26qqWl8|L zJ~e*=C9nV(n~eP!jX;=gmk{_G80<$CRoNrQ?<H@%5$+~zI@FprG?7s)rA5O;2reK% z7BI#}CE_<jCxqNUu>Wr3V9S7-W9QB2NF-x9K)xAyL;NAK0pIdsbRi*;0anlvC<$G1 zI|#N7gFZfV+6tXrIxGX|dRajx3$ry8*a`&4)zv^Muh^L|#;-r|kojU(ZS5^9+O`Cs z=F-Aa%IH>ni$kn1Dp?)q)|Uv+&Caelax{5eNoZg%lnCAi|E~z6Ym*7QNtmE1ioraD zZ+}I0ZR4LcnRF0LkD%+*ew0gTz=Hv}Ku0@wjRoV=)@(QbEb)BiH)8~6M(Eb#6TVBS zzoDmtBlit$eA;_Ms==$N!C-in!FV$!B#Cv5!F^`HO|=ZhqgIaN*WyURC}6x88bK}7 z3&v594)!W=cz*i8n$Hd!ho)0P_poa%n=~j84je~ta?LiDO1X}alO#B@y}Cw_JX;|+ z)&Fnc$N=ezLCp>AuOK)jvVe7k_%SRTVuaMA&a;GZUM`I_0i}cjmxIaXV4yG*!|Y_t z$V>3qsi$qLMow2-30=%Pt+1R)(g$4v$zHJo^%yW;8|WUkhj=_8J^EN#nY~49DW;4q z$JyvfEg7r9k=uz25L;B@@Lp;^iF4%$Eu-|-W8zjT@MN`n@3DXBl~Lnso;op)67iR4 z)AUGscYq`7j|-6Zv4USPN?(jL#OOVamKK~~S7p~7`>Rpec>Lbdyd^kq{}El!-d*6x z?P~&bW5&e$!$I*B#(?yAhQ_0z;U{@wE6b{FxEPPmEUo$R3HeNv-sX6INitJ;y!JH# z3cfY)ZQlpEPf5NsTRa6?G<2zhLWXOmd)I-RT0B<N%NerSBv4QLssOP=899<ac#-;f zyKnb!5YP3~qw5Y2g43Ao7K+WTf9@#i0XM375cP+Cj{a>Y=@Rs-I0xxPSK~ONvKQ!9 zmw<Qt<X!+r?isJ_p1ioL;OT|a?_zyM2Mx!VaK8`I?rVea7ySW5RZKfs2~Z*k(+2Ie zc2_Uj##BDXxER~-C>E)7K+Onx+XihrMu2!lGj6}0Q`fjmO}4kz#S90LN#$Cd;W9(e zZ~hsu|M0pB3%Mqc{_9l;y}Bv}AYkOjaeE|S&OiMta6Neueec^H1dg!ZTeS}yxBV0o z6#%h1$Nd<EbbX?+jctL<1!sVB2Z3-P+R|Nbrr7qBG^YSaBJ2l7TIC1(A@dn@x%{S@ z%-si?jmY*EUd3vjFgEU6r_t91Vwb>KdgX7hQ6GOIt|=RRMombhQa7DX6Grb_<2V~B zpcp}D*|<oe-g_R>4(jFY$$V52M@HMH1c<TW(F_Tn2{}zBw_zrEFBI}XbT1SDVY)mZ znjz6MCQ>OqZIQ^HWazl8i`h<A07QUcs%)?@@EVlpvFzCYm_?@oAhg^tKp3~0dTfu4 z8m4llAQ~W}D(@+N{InQz=pq^*!zUsz2Ibs4D6yEsSPFm`5aXL$1P0wJ0O2t}Jo=|B z3V?8#VR!^#42sDeluh)WC&sb1XloS!;nwB(XoiH(j6KNeT|MGlP(oW1FyIJ^@gOBY z0RKs#LzOH+xLB3Y%PKiwF#|-g7Q^lDf8&;-p>73$5C5TcEPkVEtTH61!HiqB4H_if z)r>GVeh&JcZh>zY@ry1VIaU_Mj-tHXfg5HQlq}j$XT<)n?)D>anYn@)PTSA}<?r^0 z6@BR@-)hR>Rc*`FDR$z@*|Ux)5?`f@O$~gB%MHb9R$Udqhrwa+vs;tkGR4#ZKi;+Z z#l>2@sjf#Km|?U{9J!aH!I5<+0P0XmSlsXMVaCB`-#B=wbvy*|{!XE6MQL?~;Y|FF zyhS%Nx3B@2t`r$nhi>_anoL9wJIMm!cdIeVbyukqp2bnKD=<8U1y5iMzQveDyFxMQ zbyxV>+wmAOOVcgz4I>BSQ#F|wfM9ZY15Wob+ZRVdIk50%F`UA<qg61zFP%_bk*`JX z?)viIuxv`$Dl_d6fv;7Qivfrb5AM9eoujkzoc3n>gRts$A>5{kUJT<zM&FzC-u%0A zez7goz6s-D%!*vC<BB>$jz{k#cF|)1k_lY8?JpFFC<7t`^A-Z6ck;(kG&CUk-^Y=p z`SGl)aVxK-o7$G3Yb`OO69e=+T5_rYkw<+^HKC#VWS5d%%V<H6@<hh=l<Zt&cmvL8 zTQdJ+oBYN2^Qza)$l^~I!W_@GY00VrBs2foU%2!dbD27PEz9Gni{iGB?@&>7#W4A~ zyUNs!{`nH4ADaoxvP~FH{;_YZ>uW9hGyyt1>zywV-Iuil_0%Is4+R-JkzX}yp&ouC zJY^p(w@>-)7q2pqw&Lq>7?JJbMc1M{5jJ-{t6deDbTmUr{US$OlkX&UbVM}G=(BtT zk1%2NvAI=A9l?{^&8wPKiSPbpkes>cSC<Kb{~@F1bnv51+v?V3{4}0$T!3W3ysFA_ z#;iNUiD%mCd5*j`jFCN_N_~eoWjh{yf9`j}0dYP~77OK(Dc5xt4(u(n!G7b3t_pou z0<GZS#_V6^yc|y;AwaV5BUQ71hd#bCo+6_(%(XDS;W1!5^@_hoJ<IXn#jgrY94AnT zif-I`a5F}8@%LwW=<4~Mi_gf^UD=}0_Aoe`a1z60R!`x8TUEQ>xg`;=E`UnvUl4rP z{<{x5RFX*H-K2Bj!Qi~M3^-gT#w!?m8nQ+?OFWhGFBRh#T>!}{CRJAq3Q&3+hj`4l zqxemvn96M6@IC{!)`{v3<0>I79Uk7h(sf0hL0PLCAX%(n`>b)2L~7C9di*}L?bZ}< zG|xk;BeuLS=MgxrwC1_=Pn0ldKN$i@R#UiR&KNN))?rMzE6WM(uEbKf-~-^ix*Rw$ z3yDMoj#Tb{-nlcDQ@h46K(eZdJLilHg{1vBlHxnNcDpH~5UC%yyh|nCKXzW-^G?IN zo~8hjdzZIsZY~Rm9t_+CDeJA7h6wTUgv>iy>A^|Hc+t$H6RB#Px$Ucr!QU^!>3TEf zHhR~xiPTz3$Jy#ryF(an7980a(<3OdCzwo@Vgj-i6S$u7`3GMZg7eC7Le^t4ns6$Q z>`U~$B>>4v3qG2cDcugNLC9C)c+!`xMO$ORGXir0lg{UkR&1}aK%F%sDAJI;>WU#a zk~ZK=T#VZu5p!%Lm-Y9!t~x>p_tLRS&xclOw`>GO8zpaZ;7VTpk1q=_K#hu~TlY*3 zATS#n=Txh1nI_v#w*eGsSe|G0L`LChY)t-n<!E$4^X(D{qVQ4t+a(D09Ua>;k&Rh= zZ{ARoh7|qtDR-z%#DB0v3(*b7;yls$50>zsETPJ*4!0zDh=7rHH0}mQ+Y2}f&!Y>S u<#{-oOSuz9b^%P9*(cVAKpz6BLEwL<DUZGSVoLS^0000<MNUMnLSTZ~rc$E- literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/Contents.json new file mode 100644 index 000000000..5614ec697 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_linkedin.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_linkedin@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_linkedin@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..29cbe97f9ce0d3c0335f6c53cca11a7687cbb58a GIT binary patch literal 595 zcmV-Z0<8UsP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0006CNkl<ZNDX6TC|Z=tz`)SW@c%zQkft7BWc&y;tdx<Va1oI4pO1PbBb&td ziHUZGgDm>b2ebeISeO_YN*%Qs7Dw4Icxp%?Bq(69AnPpy8s6${2o{PoQee>Q-pp|A zB`7G#2Pi%;k`acR#0>O}o|GV*Pc8$+f)(fQ0}~U(s8^qVFzmbif?RXq`hcluA=F5S zn6ZoygRZ0?!;TwI8D0P_p%kFR0m!hkPu_tsA%j5)0^|?@PF9BdZ@(}+c>fiv78DB# z?KBzs0!-iv<(t+qJo@mJVOfkV11Qo#;K;pK3@y7aGt3FMWRMZy0*ir&?bn|%gfBYC z@cHK-xEP3m5(g+UI5>(zybK$X98nAhDfQHpVpthxkD-ew3;x4m9;jVffRllPm5JdC z(50V$pt{xrn0I9O5xxT1MwA7NjEpEQ>pO6bL7-{{gK*6XhDE3E!R0{8%;iPkd=P^u z3y^*A?;it0^R7z_e}TUG{qH}+w4*ms3>4;KN8uA?0kRK1eE-Gp;m2>dA<sX3hqFNp zUJh0iK2a7R``|ao3rOJae^fq_6qrer1?ZYc;g4ECFtkvLibMBaGL&pO3)l4i`%f@? z>ACw1=bpX;v%jJh1s}ivM$vQd&P%v{5Cfw$MUkZf2N=nWpQvCC4kJL7J|ja31Eh(8 hLlK$6ATxnx0|2%%n%RoR1S$Xk002ovPDHLkV1jp3{1X5G literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e96d63deff697b699d38e9422be506d820e56ab5 GIT binary patch literal 998 zcmV<C0~!2@P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O% z3;baP000A>Nkl<ZXa((BT}YEr7=FHQuKANcZI<{4l9_3xm<8F7lwCy5K<FZfvYWCS zLA0B?sa-@AlmuM`U1ZP?L=gTET@+S^ps6I{MP-T_PSa)SoSV&cj_H`&cg|#eoUPb< zv7No|d*1hX&hK~5J_%H6@0S9u%Wxr|{L(GzLifWC2_GP7Ot^XSxrEyKG6K9Ybn$YK zY2-4Qm`xm)&^9?;CYiK;UTCA_p>yTa9?<e!LfodM1paA>SPlB@^>N5cS%;CSS#*s| z!tPvHO*J7tTmpt@9qt}4LizS|H<&?-6%`L!@pfR`tqW#>JA~>_>|Ft#0?p9Jpz%xz z(i5VCiQAo<NuV%I4`Xhs+tITSAEib0{v1zL(8^2#1*v*2r~*PT6og5@JUz$7XZ~s9 z+C>?e1m2NJYOy+)I2!v#m^P6HCV}rZ2P&Vm!STy?$$Zo`h{xT7B5^WvNvNrJF|EXq zmz;pw1G&gg(UX0^il;q8xYyCot0L6qmw-?-0VHD%p#Wk9r3!Z^mN<}<#vRMw+n4U} z#hDwBX^2HqY!oJ~c9^Gac+)?IFP0fjR$mjBz|f^*NMr1{#kXIqc$_fiq@w9;iEjp? zx%RRb7n{407^B0LBL%3~xe-xoG>X2R!xq#$>sS$6(Q!#BYzS>libqF{5$E<~F~L(z zh3R^{t~!jWec3$RZkrGSaXKv;$nz6@j#`aKWGvn)--UyllKi?0Ay8Sg85<32{etmy z(8v<5mhSLWDVBv0h|sX6w<0FDa(71J;y&b7C=`Sc@XSkBoR-gHc=gGQi5a`6NwIt= zD_K#$tmLjj%T8*2*R}NFLQ@y!7yc})I*p9$M+;G1yoH%!8+j7oiLf4c*g1gn4V`ZA z6cjz0(j~KZbc%`5K$c#f2qSQ(?V}<N+851zUlnasNjE*72q9o|IMK>EL%$!MU}8*+ ziDcTSK?s2fGI5uNy&{;&S@vX(i{xKh2_f)fj(sqqjOONj&m7B4WxA_zL<j*VulWhM z1()~Z9tW|PNeBV2oT~l|6Hv7|0|*xGfdCp!)hgj0P_;P&2o~;v02)ozD%|tH7`fo3 zM>{2Pc>PObCs&Z8j0@jyR{ljXjm4@v?&p#@d^4xiJ0f-e#U!2=*<z~Zk|c*rUYzJr zHK@p7F7(hLWD=QE)m$2hyem<6x(SkGBt6kig0s(ds%HMHVDxpHcF3Ai+&I<z8zm6x U2IFq(i~s-t07*qoM6N<$f=ZasIRF3v literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_linkedin.imageset/icon_linkedin@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..674c9ef3ec2901ca29c4e01ee9687cdab9c996fa GIT binary patch literal 1492 zcmV;_1uOcAP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O% z3;baP000GxNkl<ZcmeI4TTEO<7{~u-VY$-_G=*O15+M{tkXj3kreL%&jiyE)tTjk! z4J5_~4Qcej;ER~1De8j{Ce;UHP^68uR@6Q;L2E>4dWn}_L}`(W<zkgP?6S)qXLdbs zx;>Zgw8fm=ok`%#`Mz&H=KC>c&YYRaNKjI3V=l|q0dff>c|Bw}6jfAQCHNsrose(} zaWVDSUvY)UEd_$#+gJg=|2>vZ3fzld({MPd@mA$0681LbL-w76EGG&sDgu%;gIH-p zEQ3=g;HbbTS>9lLavkqyN)?&7h7gcZ>R_#hcg`Yd5|DDE>rJHz!AK}e0+10OrW1e` z6HuZv21)EEl2feJ;NoK(cy((bc5TW*c3N_vc<;y*8qZw88z+8-+vm6H($@A8YCn{z zHM~1>8Jc&Mp&)aqW|3cq#<8>UJN$HYL{lG*LUJF(AEzU`%XQ)K;PW$<;IlmsB00`- z!?Z0sGN9MD6(euu64OBLNKe7OM>m+-g^K|RP>dwuxf1$#a(77%oQ~jkaJYcbt0xK2 znx#odOODg?af5tGf)lQ^lpEyXC?ElH##nC+P6x@g?U|9H=pUVi+e?3a&$3s2@9326 zgQrxG1jsYz$FcLh6n_DmFE93EYSu@#x3eJ$5D%dC^D`Kko;8hSY{rY1j-EEP3l{@2 zpn-`QR5i6>!mZyjCOtmvX>LRR*mStWZ(2_>AnvJ!JvxOAU*Pzqt85x+!8gyJ=o~;% zLko`n(zl?9fSjdI4RyR3DG6-k9Q@?y93I2qgj=nSnEXwD6AVqd!G9t>S$f1G9fnqX z0+1FJmCVv3M*Y0<t2%Ji-wI@J)kgvA_ns(RhfV9!u_`qQ{Ih0c#)Bc&2M)7G{^H<h z;6-t}2CC#v`l)+dI9yd08n5R4vmbqrkI!{$>c;l%3<RaAR0$t@zZG9!`g2~gEq^s? z%kRP?>sQUoj525Y{z1bx7jWpuKa9*wb(UI?skcQi;4_#9cWg!#o58e_HfE)<$-OOj zx;Pupf7%gfT~^8~wzdY8o)nL-Y92zVYlTu@%hxB1vXHYP6%V{~9FsTk`D5Eon$I76 z@XY<U1V^D+w0aquD!2T%Q$vx`uC@jAV%eS8Ua*!H1;L8@db}WuV0pcXZ2?g`<LkpQ zzT>MgR+DW3Sq+3@U*bx~eQVPxrt>yY1&BwzHIFt-Pzc%jEv8hGU#Dm1aPsmH`q)gR zmrdYhvpMhboD8JITMOagyiDwGJ+F3cn78KL(ADB7{cNU}uh_o%?FCG*`6hK*o*0J% z+c%<mbFNx!n7?<8wMWeMfL=J#frIV8YX&_sGmDzT?SYZ`j$)UlO{kEs&ZMw~P3oA) z)_u^)t|47G>cC%VIm`B-swKvG*Ye<=0%NP7*4BXDZR@1OfF8Da;&k6Nk}Wq{nVLYh zwKbsDu0e7j9X)hFiB5XYVp~ANZ2IEbl!pwc`|k;|Z9*)4Pm^r{@ebHZqISC6XM8L@ zY`UeD+TI3R${L*d&$zvF>RZFS#5QA4lWhTwd%V;b0(KrB9gr2rwgn`s7v2aF8BOyN zitC!#7Laa@|7V2&WCC0O5`atyn5aby5`atyn5aby5`atyn5aby5`atyn5aby5`aty zn5aby5`atyn5abyG66)Mz3%Aw3l(hV7$yDCJ*;b1eW)EywkgUi4UAjcjLugzsP$_z zs9$Kk$XoD23r5Sm`M)w+Na(~V0O^2H!~&2)Lg&f=Nd~)`bxK8zSdtxVXXE9liPv(V zau<KZPFXG&Ed|(lW)5}?RXzA|R3e2E-~+LG2M$!Sli#Eoc4KX17V0jt?t_QCy<PR& u!Xov{%{lOSUxVc5M|S0jV*-Q61pW&ENM%?(hkD=u0000<MNUMnLSTZb$HLD5 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/Contents.json new file mode 100644 index 000000000..0242ef131 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_meteor.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_meteor@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_meteor@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor.png new file mode 100644 index 0000000000000000000000000000000000000000..5489e031f9c0108e2791a1968c094ed7a7453679 GIT binary patch literal 1258 zcmV<G1Qq*<P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP000D`Nkl<ZNDZ}BU2GIp6rMXXJ7sH&rDa=aX}eqOgNn9^k*Gn9F;pznnb|tE z#lPBMu__TB{3B@4L?bpDL!$u-H6c|XlkRpAV`6Fo2#GHylm{L(*`F4w^e;urc6VoI z#_u$_O`EhKV3>!UoHOT~@0{;D_pUJ3)|M~a?q^8X*SUN5ink5NbzK%y)u#X=a}c+^ z-7{(!dECC$_iWdUG1sps1M$JZ7h|oh%cvMTbjZrscEN~YRNQKD%A2EwnWpWR<?n>4 zsa;%`HKEXD%d&hiO{?V~e;J0)H4KH@H~k)IZ_fo?UtZSrBAy&q)%t{{J<07@F!<0- z(>K4XNyE4^u4zYynwv}KifUSGRMVQ~*)1b2Ei1_;?dI#pV-~zYL&30NlyN5|M^*Jy zqOq}x`=Yx3HsU(So?Q%GfA5N_mXkf)*jUY}C7VBU8U*_Lr{MH*zDtiC8}}&6b~~Fr z3Xpp#p(-5iWUd>)Bp=K!hAelc8G9$L>vxy;_5C?LG4aUXx?aqSFZw2a6S}^Uf20Xe z@ZwM~_#pSeJ`4)?(-iKG9XXiP9M-h;^gX8Quf+``z+>ko;Eq5j^qb3=g07w?Uu9ok zRPuP5ZQDK(4+ftgU%=zp?g&CDVtR#i+Q}~}YRd}3K5EP#3LSK^*=?Zgeu`ZHK!=N* z2>KBPBy_Wj>`K$TBr;|=j&nSrstvT#0NIKOisPfB5lfcs9Iw}KT(=WBMnIN71hrcz zm(dS@XyhxwVD*}C_z&_ykDXAnBoK+bPxg?iK8j9Hp{ovmB=SA2>h(-!Kw!)fb8|OK zsni{oZJ!lH@$*19e1LKmOhCew)zn03@9A!W@L$1aVSBo<#!^Kj@+&%Oas}ZCZBwyn zPRoi?k0zGe$>do_Q5=sbZbG9UL8m<guwVjm(1UgLV#KyeS?&fM83ccgz*YY8@~y0^ zD-D4g0dfMJ??I=Z(Rr~`sq>U8OH!RJ2zk)qG@3iGC;$c0VY_BoyS@4OAD66MI}^Wf zp%<O5$}1{TeLX$@g6o$B$N3f@otX4pG<BDi$()1DL`m9&b<TBcd&80d1VTHVbloo$ z#&(wZeE&euez;4Pc|1?AHq9|i@+O4sVxoA^UsLmXY;f>C6g~}#MEIV;bZ3?Xpb1hd zR#>U=aUVMERz$JQm81z=em?`G7(&)ng+dAFwHq7v2?`zemz2CTG(Nr_ol}g+B&mLZ z$Z*a*g{FBeH8xi5m82wA^exMAB9<Uj6nH#aP;7?T_W6Wi+=FfU6y5HFCe5*{SHsTo z<-dcaXHm!&Y<u;R6L2JOtuk4@DBAW)I&6|GH{~eG@bzT!910a;lFf8Du~pxInhyBR z<P{b+kWN%%$q6_Bc#OE&Yy%S0=yY2)oBb&@GqVo%Mu<LxE(hq}&>s%J0fBn~^7!=R z<Vl`?LjVc{$bPKt3(z8k!mmQulNkL0QBmqpG=;0>2V5i11!`+w!S^1}b%_JqkRl#P z2M?=Sft8Gdj#l^&gPsjC?hk153ks$2ZTA0x=lrjCG#Gr0{{5&3U2M4c9$u{Ae`jeT UYw(ABxc~qF07*qoM6N<$f;4|rk^lez literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..25b8bc182c32942950b086abfd5c4c576182623b GIT binary patch literal 3082 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 YKe@!fMV@q{xc~qF07*qoM6N<$f+7~Z`~Uy| literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_meteor.imageset/icon_meteor@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a0a84577ba93b6b7c313fcb6403b263125649c GIT binary patch literal 4963 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/Contents.json new file mode 100644 index 000000000..f2004903a --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_twitter.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "icon_twitter@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "icon_twitter@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..4570f1a511f659608660f73b21736832c5022870 GIT binary patch literal 774 zcmV+h1Nr=kP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00004XF*Lt006O% z3;baP0008LNkl<ZNDbXpO-NKx6h7y^Q5>ByLXZ|Z7zHibL<B`pyCB-Qs3hYx5>(W} zMbbJ1X(>V5LYNuLk_yCDZKOqLn_3wC2ueKBG)!>rkSV@<`rgy0uQ!g9wyL|Bd+zx^ z-#PCL(Z7D!D?mgTNB*>!gZ)yem-J0Be33~~#I!)f0~JJf#?#4fo}b2C{zTlOkA8s0 ztnOk_Z=AN87v+NN@0HpmqhFHH(Wowx{E9sLjPNPQrYF<M(|&+dHb0IG8i>?6CtWib zH4MK~8GT<!u7r6}8iC$2aknT^YXS5uV5%o(7kJ%mh$n9kxA0=r@W6m1e=HQ{p%aVB zet)xJrr8+9jww$dLNmUCh=u#s)S@0u<#daOwa;JsSz0I@F7F&z5RG}xC(?1p&jgGI z=<vP38R&gv<VpUg{+`O}N33Ls41aQ246rYMlnhQ>iaVa7@+PR#N@Rf9P?4oj9pvrC zrRPTE0|~z>(%Fn5G#9XyH=fI;FoL?~(Swyhu<4CtHswc|tX3fhKWNqzGCdpB+vz*T z^e(XVn+%{j1IFLpfO>kuPK*YA`~Z$!`x@}v@W(We?C{2T4unltD*&f{cOt7;HA7)I ztgtN_-;t@T=nmTiJ)nXi%ZQu77}kXqwnJkA9y=GRuoX7WdIg`GS+nBnJB10@&tTbg zY`9*f)&qD?$4)-Q_Bewe@1u%azP(MXI2~-#ux`n@Zpsx}jgcNKwyLl}5shyLm0x!3 zL~oG{jP)LP!cGy@lheoX#kRX5=dq<qCg3|`DqzjGI(F$b&wC&0ldenGuwokU=Wz&& zZ<lXe<_DPfSH-Q4v6kwotyKLCoB9@;WO?PPVY0C;Q>6^NMxv%?ma=-k*wrJY^uqii z2)tm%T{(ib?ZN7-h0{4QYT8mV*=E;_b~2l=ga4oY1yr*BeS1B;jQ{`u07*qoM6N<$ Ef|iDIJpcdz literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8cf4796a99419568720aa3b374a38828f20923 GIT binary patch literal 1591 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/icon_twitter.imageset/icon_twitter@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3faaeac18a0f4e1b157adb8b2c5017a9dbf76854 GIT binary patch literal 2517 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/Contents.json new file mode 100644 index 000000000..562ad20c7 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "key.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "key@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "key@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key.png b/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key.png new file mode 100644 index 0000000000000000000000000000000000000000..b3132d598edb3fdac15fdd39bbaa51e5aea8127f GIT binary patch literal 787 zcmV+u1MK{XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0008YNkl<ZI1#N=O-vI}5T4oH77-Ib5~3z*#2CYYl-g1hZ7m_x6BrH<55{=% zVqzqmJjun27k}Vnh#U;@zzt$T6rq%W+NDqq{t==vMnOG@QvS;Bj`OxYETs@g+~#%O zd^7XCc{B3>{_}^KeD2e=2Oya|PheF6U=iD=R8@T(dpY<j(>I&Gj?h&RyohAA5l{gj ze&m1!b|@txh4nUVU;d3)Z|`C@B8e$-BglZvM}!n}V$RV?JyOD}thjJjzJhq0iLaWo zzdEJ=X41}3T$5H-UJJ5#G*XL*lo?R&^<QW34k}7hJUY~!X_tB`L%U{F;Dnqjf~?%< zzvc1<=7p4w6MEzxBD?{jW{G8!Hlf`Bu9>d)e-KV&;Whr>lai@0aS;E8IZJmoB8jCk zB;3oFT$Ugzbe}t%NJ)wE5dbrsp|iEMb*=XQtZBRQioji7tDd^L-D&WKE!VM|*QX7J zG~n+^*d<28oSD0sW?Q!n27?*{d|k}<oUE=~XG~LU!ni)9^PIKwYH|6_HZ!^1ed*WO z*ys$0!-fN~nz0{-X*}~(2G2-)x?Bqkg+h7XelB%zp)QDS+6_QhB7z#$6M4>pb0Z@? z^B%u{zqy3Zxt@nq1?tD6k%6p)5_DArn)nnkb8aM38Gp;Gl(W|futOp1cdj#ccp<sm z4+zIpP#VVdaG#9dQp#>}85+15Ntf48+`K6f<nz@O@vO!eTXA~>^^$1q$`aU2R#k<H z7n92mco<Kq2$zU7gYqaw3A2w$PLRWKWb(zpm#yb1jeT_V>30r%$n#ogTF^&i^u)vA zInAM7=JGfc!?d&9Hlg627>o31pq25f>0%Pi>#aU+=D@6Y1Qu93ClsV(V}tK`0=hU` zTm|DDC9Kc<hMYVJ?ZPg)xZ`j3>!<0%2TM9Fz-g{&E-KIxj}AZCG0}Dc{s7nU3(4nN RIPL%d002ovPDHLkV1muXZx#Rm literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..face74d6aea421bf24e2ac468f3c9d877c8fa7d7 GIT binary patch literal 1760 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 CtyiT0 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/key.imageset/key@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..112061298f044920f570be8cce23b1e57cd01bd8 GIT binary patch literal 2582 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock.png b/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock.png index f0d911fdba94b2446e3387f1b77e05b3ec59d310..a87c44950d79d1256e345de6670dc92e5e517110 100644 GIT binary patch delta 343 zcmV-d0jU0%1K$E6iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4Ur)ee-=qZ zK~y*qV`RVq{{R2axM1n36d;|<z`&>tQTG2TBO~M7gy^t2K>9y6t&G?N7cX8b`G?`p z5};vD*yMqR?PFnJiHVI3evU5Bgf0Mb8Qd^N#wSdSj8UwNtWqEhVlx26Ko&vOU^oav zVE&SossI1|p9Rv$!_KH578dpnf7#Mit5ykp`T74M!~g#>j7*Gai80}`k>#<u5Ey0* z3_yu8bi+X6ATf{}hz$u}5DNh?41`4hGXu*3gfdhXLJk&L2zg8c|NrL!Nn;Cem^Qc^ zR4q&#L}MC=EK3F(9x3w{t-zYDh&3}QE&^;8)m_Mf?gE%i=;FBe=su&mEel5t#1-_! pix2)V#7Kwe>56#ILR3=S%K!@yVFnHbe-{7%002ovPDHLkV1kP_iBkXo delta 400 zcmV;B0dM}_0+<6KiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZyde@{t7 zK~y*q?NdEV13?g-+0$GaA&p>bnMyEfC;kOb@Cd|@q=`QwwSU8?F%V8r|AS!R2ijSw ztzcncrMc{L=ECJ}Llo>CxVyLSy_wtH*=3p#N8M;;V9{ctWtBm6;~C!Ht%cX)b~8>K zbb5Q%;!5~60C)N*R!+5Xzx*VNf8*X+IsWS36XSt>v)%~9S5@0lG>1=n!Jq}NP*~il zZak)0&J5zXUzZ8{X4<c%$!b)roGhg{^rY!TP5}lg#PnRR22Yt~h!Re;#FG=Ja#$dj zWKHibmyMWMwNl1Nh7Q`D(^b%5i@^cN&JgoU-Za9%Jd^nV<DAJmX>4y^W+pRWLK&bY zv|(BkR30TcK%9i4yqe5OcZLO0kMYb>y%uWQevHFzRIvkln;M)=Ov%4|{|gW~2T3kW uOD@dYZ<{Ed*}U!)ARx$#ld+zaEWQD*HhmO_1eP2C0000<MNUMnLSTZ(2(sA# diff --git a/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock@2x.png index 7522c451590b5be90c8eeb8a6345b811bd68eb11..ba072523b8a1ac9e37756089251c03f6566e8050 100644 GIT binary patch delta 652 zcmV;70(1S71(F3JiBL{Q4GJ0x0000DNk~Le0000e0000e2nGNE0F3^)ZIK}pe@RJ1 zK~z`??N-f796=DSYG*eJ?hA-WAeVse5fC9F!l<zRB;*nja>xsWynv^O7g3`N{(y)= zE_siDmp}-?7cdaByLP2(b=aPoneAy;%pQ6!(^Xyd)i+;PcMn1zPor@>-q!6IjWmq} zPY7|0;gINp5WXwIFOiB)>-D)`e|If|cS+peKOOtqzWPW2FNkQU7X~6;n<CqfqTvsV zi!&F!V)N#_3GVD2J=a7H0IKBy7W?p0A=X!y;<MtI?2O8~iak5Khwn7$6Mu4yNj1)8 zjN%H}nbHd0D97X=^-%`koAGQ`Kz*%N;U|}9HesR#`Wa|=W!hj;l+_B=e{5MLOA+Lr z`_sBQx0N%!)ifL9{mN3jVa8gJ=$NKI)#tsV*Ji`4nQ^rngO?+f;iqMKGNncrAU)y@ zA;}Tp)avs5dJ#EB;5m-rSpJ|cD%EZ<yPl$vQ$apTTGakw?^Xr)mJ1hw=J`$Uz0p9Q zk~u^8x`NST*Ae7Ykk2`re;oH5FKbe$?7Pzn+^@F}V={JP7rmVX`4CPen+?%xSyQo= z(aABnmJ2f2_T=r@Nsw;{JCAp(ZTpO6uEfs6auQ6guOvA+N)p@WEpsJy9+s0J5RKZ2 zaUB1)ZJ%)_S77I1xe4ZFJ)kcT>{sl}LA|wmV6M;q_q<$QNO1~FV%+aq47`Go>kDO1 zxZ-{1T|GbW3I>9{OD^Msf>IG*J1FR@n2Zk!N=1C_prEf}GCn9M74fx$g1(B$c<2A1 m>wirG-nSi=xL-vFUcrB3FTq)A0?;b}0000<MNUMnLSTZ9W--SA delta 653 zcmV;80&@M51(O9KiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPGe@aP2 zK~z`??N+~Q6j2bKd3ymt5Gx~E1RE8>N{e*iu&}ZT@nU{0cLri1g0@$y*eQsGLcHU0 ziRK7Nkv|}$5G+g;5UuR;2ZRIy$$R6><_33<eVdIa*X$NMKi>Dvd^d0R?IE1vA|lgR zTDb?#jUv%7Azl(X`#bD^1!Gogf0JYDi0JZ`#k|1QQfI_kddnhiW^uUrb`ao`aI&(Q zh10cM0-CMm#}45Q5S5geX%UYM!P9Cu{w@>8izf<bE_|MH1np!Y+~m1`LI{3Jp1@uM z!U^_9;y8maU7dNb7|-?knF3m^&J_#pI{};#A|mYa?OAPl{9|t+i5u<Ze}_D!*F<nm zVlI9VfVmNdm0uF4T_!E5Id1-3n{(r%pj5i!Yc3pF6O3Rb7OvC~-*<ThG}hM6bAkIx z<Z-?VC&s>M?6ZOqtgcH9sikqR^$MW<!@CR~hzN*#bos)IUa~Kau*~VM4|Hp#!o33c z-M*>}B=}M*mk%^P$qH6De~OFO(wtha00vxC5FzZSpVuZh2!lSJR{%l$ou@-z0e}7v zhYzpgtxN%X1*BmAODb^=@Hu}S$(@x>j$9oajCQ+jm>`%xjRI%wEaS@&$H1yV^HO|5 zv(Mj)A5orf$)nZUwj;Wwi!oc~g2%;T$=ojg5C<;$F^IIqyxYp{WBV5LT|jaRbS`Xp z&mL80Dj#C0zjm7oojHD{-lrAl`veLB#RQ586cZ>W;QbcxKcb=LVkhm>oOYyV=E%{I n58xL-R3}SyAMs!1i)Y|B^0B~3jn@0000000NkvXXu0mjffx#*% diff --git a/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/lock.imageset/lock@3x.png index 72797f8812e7631f573c073982f7a8ef046cd5c5..7b310acceccf810a9e7ca256dfed91acd008c1a4 100644 GIT binary patch delta 946 zcmV;j15Nz82ek(wiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5Ha*-hue{4xa zK~!i3?O4xi6G0T7Hwi{*DvGzDUOf3Pw0i78S`6{93JGewOBKOu@hTMjaW~bbpnEVx zEIst7_FoVLFCw{#Vp}yO+40Rbh5VSe+1bsoB$+_z?!1}rec$_LcU}U_@MmM={ppt2 zUu+Au08E@`g5?B2PNoGR8Vp!Ne=zu#0=AuonayHx>8D9bU<&+Y)h)C=aTf($W<sPx z<pF46K|Z87Jik?PYN6I>P8zx3wd$LBA;e=L*qkPpp6LK=2LK-4E?xiB6Nq^;GQqCv zruLiODhgeW$*E^K3V%A2;SU_gY4-#o-i$<WrB*w|_6}Thb|E5<z-8$4e>Te=bIOIn zufT~Rg0Tflv0}HmgSjq-$QNhIXPC{*#T6Y(@ZmNVTSJ`%_>Nn%&Kcii>D1Q~yw#A( z|9a^hYqc+U%v;1qA&)P&vq2S+PS0fEN}TN-?(Ipi=sdIZHpU|dm#$<pP$5Wu!MOa} z!s0FOHANY(AIYN&{||g*e_{8VVig1T27)06B0DVK#-1lWl6e5$ojG~Dl+WjP$vKKZ zy<VUF@%vvD-M*>_`$L?=rKoT3$PUY+ha$u{JS!KS`?v)?at;xY1w!n?+PeEhFg(W< zpHA+1MQG?yB!>^13h%8F9i1(goI(__-FPU9SE_D}ayrHNwJ6OAfA3Bb_S)~DRFm<U zmD@P3SP3mLB$jMFRjEi0s>xkr+Ja?o?6-?uAYGR$y3cIa+JVas*2+LY4q(gbb5REA zL2bbY?9Y<2H^!qUo8c8YRkVnYiP!_Hu|M~@3<QD)v<0)ar#yz_IZGTp!3>5(C8oqy zP9wM|=XM751p_;$e**NI3RPePV<a}gB`Br7V4^9I9aK=FSTPEl;u4TdTkz4B_kPTy zcCmka6!#Q1#U&`GwqSf=WmSOqtnI1BM=?fX6I_CF>I)7+8-th?JO(DkqG%nCRlYG; zOnzH>@#?i01O6n%J2!7Awb?CAmTW=-*5L^;l9VxZ4r~92e@DIj$dVck=$<B1=dcxQ zcn2m9ZyiqD0>cEX!-fl-IJ|W@aSIF+unrq8aN_XR;lwR4Ou#y9xWI|STZa?3z%T*p zu;BtH4sRV!+ycV{tiy&2oH)Gp@6x)z11GMqkAU6MeFd4gTkG(|S=uLP>Ky(L^_B(j U*sgTm000002uVdwM6N<$f*y6X^#A|> delta 951 zcmV;o14#U}2f7C#iBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj!@e{o4f zK~!i3?O97t6HydCXIcm<Y_Pb%MA>1&Qr)<8<H}SCw$hYG(fC;S*eWE(MEwD}@DZhj zl42{-G_G*r(!}V-1&Qn+8Wy5%0L9YI@yuAlotfLtbjnDY%xrp|-+A48=e9-IriX}d zGV|i7s!|w$jsZa@A$Dr;NVEh9e@jfgQxwb(#?E{|MB0wfST6`Cu1rj2hg5)Dob*9Q zcnFIM!0n-Ubb<?ESNBg{1x!xQ94T!SQ{2iPHz{!Nxj<8Jc(A|kqZ@zC$8`azbhe)p zf5sEo<u<sU0OD^>;@t2+blMG$s{)c!*-NC-!>R!hSM{~eM*3bLYOQ9Ee+phs#G{X@ z*~oM?7cf4VJI=du7KnmYKwL(I2N(#v9FFzPiTYG#riV(UULv@{C3T28oklEjr6)!P zBX2FbDuS8{$YfrJ){DR9Ie~Tyrh@nPwzZ6f!{HT+P7vht`L-V`>vuq<tAe;p;?I`g z?(SIZ<aeu1E|GLmZm3EBf0Wk7_`{IAejFm4=kbqM_T18x3%th5@Dra}PqpKBOH1wL z7}vLC)hWTbx?ytqRTmTs^Bk~QwB!Ot69dtEqRc6sOlNO0-d)k2@d^-Z?oRZdUJ&J# zXg-deJ+x7Xo0I1=?7iFMwWzu;V~81OF|=5stQzgO0N$LZ%s>GJe{Yy&wem6yS*%L9 zj+Rg^m+M$vSHBrR5Wgnkkpuc3FeqwcxZ{{g=e`ioe$lhFMcEgLM3zOFjCM4EwSwAZ zcIKPRn|hPiFv}RTW_(#pvyH|(Du6JcU&;&s2nz<j9!7#CjVX!Yr~pt)k{1uyj#m;- zE<y>GET+WUQ2`1le-=BW`fib8E;1}xOwnhPwj{QxXp~RCfSsO{<vozh%p8JJY08)w zhKN-2x2*ynfg46UcO1V9n%L8HMNt;{(rCQY1p@IztnafJ#d4WLQunAtheaa>GP3`; zX3Nz=X5~^=ZkVBI3g>2q^Y?(cBmbLk_z76{fV6`MPeumLe_oX8JQ9wlpFifUcfk(6 z;V0l1U^il~_5K9B?yw!cKLNWAd9C*+;B|-X@cjwcb;xVIKLM{hY=`epz^+4H>-`CM z-C;ZYhM$15uap42{CAM)rxv^3)TihF3k*N0R6=uB06~ZWLzO^wQr_@O$S+_gmyZ_v ZFaLxDW)Ts;4fOy3002ovPDHLkV1jeX$9Vt% diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/Contents.json new file mode 100644 index 000000000..32899f8db --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "mail.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "mail@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "mail@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail.png b/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..de70ea51f7d9ba2944d6068b7ae0675d894af156 GIT binary patch literal 445 zcmV;u0Yd(XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0004WNkl<ZI1yuD7;%6R<YPk<d(VH2|7S7$|1U#U2rx1}VfxRQcK*!4?JOVz zAcir#XJlfWOOAp6|1kuC&0t`V1se!*8OX2;rw%ocW1xYV9mD^B|LZ||na~X|G_mt@ zaB$#27f0teG&C?7n%D-Ti=!B5Wa*&tkKzCN_h0^<H@0vzM^_Bvo0vGNZ`iu;$Ug># zHAZH3PB3v0jbh-r;|K0AF*3U|GW_TK`}glr0~6a$Pft&Fm<F(`Oznz)Gyc5*6jNhj zVv0I<>d-!zJcvdy5F~K^^npFx?1H*L=G^}b3}w$>e+9c1?yCR)dw@w}J3AAr_W4r> zmxJ^m14yJGivZb2k8b)5q|yyd9ajJU|939Pwf`9zegh5q3UU=TgJ4ErxDX}*qM@$U z0W#;}a}}~4tS&@W0CO#}7(O;$7vj^1OOEOWLc9#ji=gZSO7Y|XkX{C$86dr213?)Z nlow&yhh#&cg#*d@hKB|K61<4-Jrbe400000NkvXXu0mjfCH=dX literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2425cfa0f59c2d793060a6a1f5d1a92f1a62dc54 GIT binary patch literal 853 zcmV-b1FHOqP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP0009FNkl<ZSPAWzO=uHA6oB9C77bc2(n~=x)SDHOv`uQ2{Io(nlzQ>xL2rVB zq9?Vd_NX2e6uc-39#u582Nl!gAZ?VS_2=xtQUz&M5UnKpe6zbVnV6qV(lk-nfo9*% z&b;~h&CG5#0B&&&xCZ`j15Cvq9E|N)%jd5Euowb%tJgL<X26yKFtJ(J&(F;zK8o=q zAcy;9<QD*8ySUhvBZC!>ruzh>CLm06?S|tp#9+;$Mb;qz`Lyz@yfB@OW#^Jl%##*< z_(S0_G$3vb$62f*4XSId)o>goJD-}inMhM%{YyY`@n1VS0!~d$X^1E{Q#1d8SS+S2 zvGSQ60Uu63zu*r=pZWL2yya8WUpqQFx-~EmxwiVlu-9DW9902*!Qoz#HwlO%m^0o4 zg3(j!wHXKwM?bIrTr>brQ{F@VVDv;~Jb<cz42%Pefjte_X`pevQJcb=fw>p73wjDr zMx+pzMpXf`>Dilf(-|Vjce1On8491Q)n<`3N@(U{u&RM}Jey7(lex<TRRMW>f=qXJ zb@l^eml$JtD+k#$;D(dU{_*iGzJc)75^Ib-?(jfw=GE-oGE7BPj)1)N%*@Q%LOMBN z+k7uGRIwQdMk4v;uZz_74E+^Zqg;nyr&9FnbuKjliZr&(zVbFBPXqf$b``8)f}Tse zMPKSuvo+a=0>}H1+L*`OCLJbd_uXd<ZzIAUvkk&Q<9F^Ye){%>&b?+G|KMv4wX>PD z^K{BSN>G<UrJq=vB{pf}cx5{V@mklK?DJPpw?VbPu<08LKVUhyC2ewRjGfEOC-123 z8;Kh>s1CO9GBr;-y^o+S(@uY+ZSw4G1{@z_T?SQ1+vY{Jt{HJt3^oI#QVtiel9^iT zU4ylns?<&zwBAdtX8Z-FQiqMISI1OYl-mp@Xz-&PfWKYQw-6q-tk9TBF<H!WX^_9s z({po0Y1N*P7)%y>bX`y^Eq(az-Pv<5kJwF$yQqGfxYmjzpH})#7We4-5%H@+E5>!l fa1FQyHrl`+9Hu5Q`st@600000NkvXXu0mjf%!rJX literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/mail.imageset/mail@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9ad1b695e4af6b11f74b462f11c1ffa5d8b326 GIT binary patch literal 1199 zcmV;g1W@~lP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004XF*Lt006O% z3;baP000DLNkl<ZXa((>%Wo4`6o=297|{g+(G4J4sR)`4NOm4}3e=8eMU;oyiY<gi zfMpk`mD(<|>`USgfTU5Wy2*xz1d%`?II5tr!A8OYB(}hoNFdTMGpFZFJ>xqs*%Ln$ zn>(Aib6@BD&Nuh^Ue5(kmx_RjfQo>MfQo>MfQmqeA|Qh7AfgyZWzQm-X8^=r0NfN* zZ~f(o*W_zO2yLpgv~W=ffnFbdf``)S9r}v+6A*LW%3bv=#C+@n9KXM~_)_*;lOLFD zPl#nv1dO$?CRw9PFu%rKPgYh(qAg8QUQ9}pRvxpi3uzqu1p=PAa@Xqv!X6@eg4}bc zRyAF)U3LksPEd9ku-I}TKkj67K_ZdN5I8(pbCoCE+U0tseY0`5kge%qww|}q{R`s} zEVt~<v=ZE#Tx+V<L^v^=J~uQrwx!lh=Tig2qo;-r<aS5399eKYIXXe>we!aEYK4p* ziE6Of`n(d1Co@+~F#j;#>C@hYMZNwb36Ag2?G%XTxl=N<lZ;+ZB-7KKq8(3W$MqGc zknu08K4b<*vftDbDVIkQEOh+>0=iyhM3~T*S0A;LHdCeF*DHX=B|z9J3qaHSDaxze zu;A*eGf%6L71^MbM*N6r$5WZ9R@1hrlKroIcC8GtV2ZxC!Das3h6VFhi&kB~ZNR<+ ziN5FWigHXm&9n!T*~5Y55i*m>?DjCK+>HS7N(h)J7xTwTf8Tu3Xx9x3wmU2qZ$CYL zEO(F=tKWywHqf}y3~ds6autk97*!H`9XG`Gl?#hAwqK3jBMat^CnqP(a&ht3SWFve zC2gB338noweCQQHLYF~kr<v-*yYtVz<&8YANwD4V{kscK`ajwBd0pDWnTsPMM>gB- zg6?&x3UPy|?tNIe^LtSHM)R5y%tmHsXAOroz(2u;@yv?(rZSjHf8i~+s19c?*QHv> zA6+X|*=Ey%?anOPyS5(`n)XBJ*fwD<F41<V0)B1xBj0JFYzbAlPtSf>E{dLJ+SKZo zq5avb`a5HW(j)#}EZT=i>?5KYxKiV>O2g#aQXxO>Z{J)_%LvPExM+j;S1z;Ch#!ZE zrQe&mjeXj_QnB@7*>+0_%ff8hgP&!t89MMp6F|GxqMcN0Rsh;UST^wBUjA{vJ+^~r zbLBQumHlZOVcCdG+tkGjt;bXU>!h)&!FQ#l{FGe3o$0m{mYrwXpYGar05tI<&E(gt zvD!hg>`O-o%c85af0pw)neHgzP6`XNr38mXrdRS6;a(vbrb7`9i%hTNzwd<kjD&R2 z_g3ktJCZ)1-I_crEv%3#XIDd8xD&K*4fq7PPPNxQh)WJynw)2sU_SjqU(6lBREs_| z(8p!pSs17Nx=*ks*-7VU0B4dokw}f+qC`%v)U|0k$x~jsGsgd^+ZtSx78meQAKJ;x z+ZDR@UOl!Xi)Ae?!nQaj-Kz)FY>n!!BA_CmBA_CmBA_CmBGC2-{09U9%*}$VMQZ>6 N002ovPDHLkV1g8vNiF~Y literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention.png b/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention.png index 4455b43e8999c322b2b4f2aa24bdf7dfb0218e89..d02eef2531c3097d17120327a0bf7e309c7bdf6e 100644 GIT binary patch delta 704 zcmV;x0zdug1jPj*iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4Ur)ee|$+q zK~y*q)l|<<6HySJ*)12_SVV#m4q!wuaw*t0;Zimsu^4|~!qo)5aFD=1Lo|kqG4bG4 zjS)@IEu5rEn-GoKCbowv7mb=)5^8sxZ`)mIt%jq%<n_&a^Ue3ZH#1wJe|_+u1fHIo z>yXUbDTgE}B>liKanT@t%%j6Ae=nDptL<Xj5{|{JDMy?oB^p$cuf&pfgM|n6EUagF zgN=pFw7t?wYP23iqKWyM)E*Ma0h4*AGh}pU)9X=8*f@g^7+_oDn-oGBfU4jTg^bHt z+y2rTfPKWWI;rg3QMG4HHqY%<>JuVowaquLaXW>~5s--pkH!<TBy`3le`b23>lN1y znwO|td!?DJm}4hTc{%l;i~=BM2J?bP7Ku;X6QNtg9L02Pq7e`R11w??>t3QiJ|U`! z0vrq)_u;H7lMBqod^Wu{gb7<oyH)uSV1PvoVzI~Y3H7FaRMWQYAFfBA$;`QII(5U{ z>kn*Zs%Zao;mpNqj2qhke+3%r{ug0URi+o9igS9wj<@#}DyT@>XO?BvFVO<%(@sQU z6W2U2Y*iD~!iC4jlU?!n<YBGqjK=;>h%Z3F;cwraiy+8stlic^JP>iNM`DS0n6R~~ z&xFX?saCdjo$8j_!bXRl*T*k~`Z?)Mc}HXkeWv-7>_%!@b9R+Pe_mk1);vxI0)d1+ z^Qq>16?W$Ns<vBw_<e}&ejB?H+jjAj3-8Adh5XUpflvDMMc$R!-oAmt@X)bbp-^z( zM}B*Hjvp$O-upSj`QFi_&~yCl&q1G>(w?05u&ry8LeB}Medm)mdHZu(d!(X?2d=Dn mUDwXNyIm^gJna9s7XAdT94&$vHXob-0000<MNUMnLSTZIBURe~ delta 612 zcmV-q0-OEC1?mJLiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZyde<4Xk zK~y*ql~ccKR6!7)SuY_`f+=!`kV6h3T8dg(g{L7x;J_5-<j944c534xHllE#ol5?K z<bsAk&LYBrpcq~ySRARWv`O@;i^W;^qli0x-;);~!4O<nc6MgI*_m%<Rrah_t9AIx z*B_V7?2?Kdr`be5sp_kdqk}Jsf5qbWG(^*vrDv-%UTj`P)x=s(^#kqR>?CwW=*)@M zs+CeR!R-cEe7bs1Rq9a8TRwL`41%AD6VFBz4QQwPz(i_hQolA=dPsd7fG@+aqUxrq zvsYfzu-{r*em-gDUjkTWCd!((d*41HwG}At5Ew;KX6tkJhN(>Oj(Xm>e~fN;Z+M_| z7Y{x{spahOkugWY;+m0m0^aO&*OAd}+&8!>`yE?A>XY<giNp}=$TkT}YToQ@-vsRi z8R|bBR!Vhl$^ehRH^%_<C5BkXRwZo5(aleQnMOE0-Q%5$vO0Z>SBL&+M2Ly8i6S}C zZ)AM%a^ij=(_@Z9!ao0nf9N_4VPkD=IMGq|=FfxFL+y6Ek9w4F7WYAIEH}%TkH?bF zonUS307;B_Kq+w$1O#Ut)I5fkw9&%%c=)<Az2!KboG=avor56QDdck(;q(N6bKH~* z`RsV6zi%8(?ZNvDa;R13W)@%*`JX|ee|p6Ms5oep)1b7x8-U7xI(;UjixKdrkopBQ ys1nXzeYbA_8uor?1VH;`i{H60nr)J!bb#MJ$rIF5vfo_*0000<MNUMnLSTXoCL=ol diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention@2x.png index 1f51d42fe621cdea96e25619ab0e42dc3c3ee044..3d64c50264d0f09b2b73cba74af310651b87e3d6 100644 GIT binary patch literal 1580 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 literal 1462 zcmV;n1xfmeP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004XF*Lt006O% z3;baP000GTNkl<ZSP8XPYiL|W6rMA?x5>7tRRl{S^${sbeW1|d4}U3AMAU6!x-rS- zu@RMmf(T+-sT5zSh#<5-Qi|O+?<}!tsQ9R&{uKj?)}lzDq9phNC9P@PduKe~+?|`* z?QTr^xUf6tp7WhKXJ*bhb1sP$K8J_LZxumshZa<;wXTCY5zUa$vmzGzrmMB-yOm5y z%K>MH$8QmV|Af#YsfD;{DIK10T9B9&vG~DEYt#2jVIf=6fq{W{Yx5$%hXg&&tBn;+ zMs$X>o&ir2)d{U@TsiMbpoM<N6W*To_D5%3nM+r6AlpCoFt2uqr(bIn*dUL`VnmZ_ zjrU2Wq2VugqU^-PmGW%<{y^&_^S3QJM00GUEz{9_+{IhEtOMDBu@`v7uQN#UFE2?P zSY0JwPNh=6Tg9cu{{ExaDEfD|(&8z`dHhqnBfB!~&2N<Io##MyFxR7%>IIO6KT9v3 z>}+ZJs#I|~??*<)?^1bxl6P{0nNP}{nRIHet6Stixb6BF1F-U`>UiRz*4E^&uEI*` z;o-^k=luEiSZ_1`6vxvx_c$U4Ou%XX2b?)pUKLMlxme@YSvaxa&wm;21kHIAzu5+6 z+=3A8Oe5g(*!I?z$}7(fjc*j%e?Tj`-slsZCMiG4v^D*R_rby3CSQmqsp5Sd9gV+X zA$%OkAn$*H1r}@}KEgB%^E^0-RO5i#-_`!uGZ2<O#&8h4&FS@EsSNMDz3+1|dR8cZ zzt&=_l+@dmZr)|FhX+RYabP};6lL6Ps1rDAfg)q_oKp?aZWY||$k5omS_Qm~i^h4P zS^O*xGGMr1-2k4_`f4k~DD|pWxNM#=wour>!yhV~89C3(r5aWqC^5mgy$;@UjO<N# ziEBBn>hJ>%o>>`V_^iuTOB@H=L6Ao_<EZV*_l*LIj1iXp@wT&uF|IXj?e1v))P=OP zBvBD}9_r71Oe9X26}kY2h7B%OX*dbn5*Le=qrzF*j#z!P?OMOt-H|FXZgCimj4_tS zF>!^Z?O0@kZA;v0M#yJVT3!vGqunZ3dx?FPt~9zBCA29(F4oux%Q~Mt)k@y3@JcOQ zEG`(dO*I5tVXI3aMehYn-Y~UE>moT`qDzczhe3EA<T5je=8Of>YbCF2@k%XYm!$p) zY~HEbk&#KWTV-GotAN1;gu)OSiliaIHDa9+lemiO4tFwm_&&##YH0V5;vd@AbNTtQ z1<J}Xx){>(4_D^U>p^QJu9Ik^tN{19rR|9FYAPHUM9*`o-DhQ`qmeNt;*+|4YHBLn zjRF&Q4yWpByt0Eii5`xN$TS#*W&&jKgYruBH}acEpUC!)_PWOb8a&8C44pL-Xi@*| zsp-C4E|<VNjQb)#1`L~D5UaeSY+H!z!020iF3+J%)>Kh_xoU_~Y^x!3@E|iVB0eyh zhaHVc(VzmogNw~}@EAAGs9%_>4~-jM4;qv(3%G$~P=Gl2XF<Ib&Q$#0+1C6S$=H_Y zI9LqBu5rkK0d`Hb?B@4_n1wM3Uf{;iI4!WPp00Gt6fCm?038|_J;0UWNhb3#FMjt@ zT~O(DY%+y|)n3P#&pz3q+@0K>-lK%LksUfIJn!>NOT%d^j~uw14T&{YZj1^MIu!P% zjX`{6iw$U_(8-ijx|F=g0ZfWsjXRqc3kEi$jY4C2DGip+6&-;qD0IfJF%J%|xGi_* z`aim?15moq4-=)-Bb;}eB+1>K>Fpm}umeyufhm^pX=bkU!WUG*B1e25AL)*Za=<FD z_~TU2aarTN+S%Cnr=6qHSn&udDU^PmbNMB1EYO_JaMAxdolc#qq+5>vA6J2eG%)Sf Q0000007*qoM6N<$g1Pg{Q~&?~ diff --git a/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/mention.imageset/mention@3x.png index 29defc2cd2336da6addb8683f0b618c7abb8153b..3947ed674c8acd27b3ba7bca56f1fd14fe5d4b94 100644 GIT binary patch literal 2410 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 literal 2249 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 XnnTY4yCtGD00000NkvXXu0mjfpFCp{ diff --git a/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/Contents.json new file mode 100644 index 000000000..2ef36439d --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "more.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "more@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "more@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more.png b/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa0ed36651b6f1120c41af8ac7919caa5d56c60 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^l0eML!3HEZ{B>^zQjEnx?oJHr&dIz4a(q2q977}| zlYjjGzh6e+J=>%60a1O7+zUKpuOuk2vhUt_;~>KnR!bI1f%SYVxSueme2{EcO<A4H uBvrw5HlW1LM=DlkZhy4w1#XjmVTRudkMDn3xX=%1FoUP7pUXO@geCyC_%2oe literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..938f74283fc344db5062c8af4040937a13f3a3ab GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^MnKHP!3HG1iSZT!DaPU;cPEB*=VV?2IdeT-978Mw z&xShkH7M{X|2y6PaD7Gl`v>A(xlEmgvvOt3rkhA;#6D*UeswV_x{>J$pWXW8yH-W| z4_3FgNLn<e%gi_-?E2&NL5=$|y!EWtugp~x|8U(oXj^>OqPJWvNna++NO$VW(ok{9 zzbN&`y1(@e*JP=46D}5*%FLGAw{pf|%N(x7C*@B_e<-_LkoW9Y@8#E1fB!qsl6Pmi bYQ6X_9U+eI=KTAC4rTCk^>bP0l+XkKo`+e| literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/more.imageset/more@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b998af6d92d76a522967f7350ecad8ca5c76087 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^-ayRH!3HGPv>QzTQjEnx?oJHr&dIz4vPC^z977^F zuZBl+9dh7#^J`)Hh5h$dRXFfJu>2w=%EBK||B5GP!P10s_1}{nJmhE2RCzls_quM* zyywg{4fh`^*PNR8d{14(5_4;n{Ac|OyOXMa2>&}@u|MBTRbV2&oV&UBA2%JtXQq-8 zl@AI_0(GVzxHsAL)TtToqb40WocwZ8LS46rw9RS3riUdz%VLf$3!QUvWrgVTYrYkS zlq1d^3lWUhT<Y!mPs?<PUe~+}M+>id-aILO*lOz1yv<6liX`i{trdw4EOcA<D0EKr z^utvW-l-vlYKtMfU6OEKy!idTir=!?(H-yV90jt~b$K#53%}3i{8n~l&;2Li$GiAf mcOOdr`}g*dqY<~?^WT^%RV;kD>L4(*7(8A5T-G@yGywocA(%@5 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/Contents.json new file mode 100644 index 000000000..4f881803c --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "options.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "options@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "options@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options.png b/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bd9ecdf3d18f9d5818859d6cff8587a26df515 GIT binary patch literal 987 zcmV<110?*3P)<h;3K|Lk000e1NJLTq001BW0018d1^@s6hE~sv00004XF*Lt006O% z3;baP000A$Nkl<ZNDakTOK1~O6utM2wYG=`KcLoHP`U^)sTmWIqM{2?5I=~;l_Dw@ zyL7D-b>T)_>B0{}wJvm}f*%lE6e*(lO%inxRJ5r0X>GA;)lQ!0O`J4o(<D>UI*WO4 z-kf{Sne)EG<lu@%pEsIhZYPrKCCNG_T13RNrKC^H@;%DeMB2TXHQF7w+ud7EYUC(= zg`)8ml5`BD-qL6bVKVc5jkKeFzb95Krl^2uG#SJfpT(E0DwbrtcMyS4x~9pRBf8%B zxe#t#0Z${zz0BzgQp)N=flk^$@`kI#wv}FQd~}=`-JqUBvG@rhv!fE^Dj!^Eki+Tj za4fk=J?CCy90)~?gYfNQE~sL4=5LzRR_nUwxt%jlKq&TX4W)-4LUEN1sCdczs&={- z^msgdDtEREV7EqT^TMQ(D@G}o4*fEZtE#%P0wS@*eoQlWrg?Jj;Assd63emz)Yqf2 zeR63>vRf_>%VSvqk$Air1FvobG6gj$cZ8&@vbsQ;ykiO|^C;lLY%-D?>@l!0@9k7Q z$n?g40_2iXoS3igv9xwz^BF3NWl92fqbTOzOLTj^=;`UHvFs=rA<hK+zJ1y>+5|BJ zh2eaA!Mr)EfZNT)9|~heT7g+4`uqFmjWiXhak|wojK#Xo*M)U`-B<#?9PoR0*4Nkn z#A@1xS+%f8w#+N0xx(dgeJKe90CqM0Hn}^TNVwIeqH$F-Go@54%2PqzcL3I#;b@{A z*mLFN#3s=TH?jFdjjsrDl@-L?CxqOxvZ?8DB$Ap>Vra9z!h02Ki3rEyYU@5+R-O## zdPV>i0$5h=VS^C#Lo&An{l2>@Pb!tF9vJ-D2@$&-kSpg-+tcuYlRymGTJ*^+EZ=)T zK5Jm`$33Uy79WcTmIGnKSerJf%ZUhuRVN+@c?&@ej$_qK^84mn4q#+=!;W`Oli;hN zz&W|a!+bNq{KpcYMlYt-ai;<%iihogXd0hX@%9)XjO5D@@nWJ$oy39Xe8B5{nI}NG zKtelYsdJLeDHbQ98P!_59hP-KH3U|89$}8P*)J<zX3m6L?c<orpC>>y1pG~xSY-M~ zJy+_&Apb5{wB#O0Rc>n<79y$ie}N!vyRI)cMstmEzy<{M<ySNkYoYv!-R88k)(PfL zLAAj`<SO5|4&;*kw|~Q25vrd1cZ|oy*dwv!vI`r~$BF(O{{=R5O&d1Am-zqy002ov JPDHLkV1g^b)+zu1 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..612d02be8da16f9579ca500f02a089ec769114ec GIT binary patch literal 1937 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 Xw<F~UF437I00000NkvXXu0mjf611Xt literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/options.imageset/options@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2622837a86f7a4877d7d05d771c9c7d95d6fdee5 GIT binary patch literal 3262 zcmV;v3_<gWP)<h;3K|Lk000e1NJLTq003YB003PG1^@s6T6|+m00004XF*Lt006O% z3;baP000biNkl<ZcmeHQ4Qv$06`r?y*x=$M1rm^3ibzB3Vtju-l!mk+brdxe2}+_A z(LmBvDnyAA(ozwnDnX@@+NMfW8la+;+E7qifs`PKgd+qZ4WOpjcfLF9+9GWfP*G`U z2sO2_eY?|d&c0)BZ}+@=-n~29dy>7ovv1zaeBb=fn^|HN{5yB<Ty<aH&;o_2^;}iz zRn8iS*nGz6CQiJTIICquwTyF#6ZI13y_{Gt-uE)b&yz$wjI$n+S&xt3)*T4U`Cp|a zmntbjZJbY$JI*dvh_?XL7S8Ez06Ep6I4U5o9fTc+-s3cT=BY?sU7tg`i&j&10yuJS zES79hiLc{~Rss0hqElnTBM}X9&RS(z`h9Ip^;-)TEEuri-7(R!5fG1e&mU3-H!$LB z0mNq<OHmPuK*kkRXZvMI-W?1!#)?o;w3m_-(3VIvFonMW(7%aT`-+aaTONsy_!zwu z3N@W}D+sOLk`XWrJllrA9~RY)HWHP1k5X}hk-Q}mY&_{^{9GrX?c&86cIl%ZGDe#K ze3hGtaYHwV*fT|{*&GPm@o!i3yP-6r^GqzU5?#aXoUwTsxAAyI@97i9r5`kh7VQQh zs*`DOr38pv&o5oxfga5hPDZx;y6D){DfDPlQ`04<;^H^~(P-yFm6QXhZWcNf$;#40 z|B__+(dIzoaVO&CXk*ykkzA{?)R~D3zJQ$1!KnObTQu>a69hO`0@^wf&vTXk)QL!q zA071DNT_K&+6AT9IFFeC<aTQ7NWO~t{<&f!G0y!Ro^$Jr)pO_0?Jp)BV<G_HO8|cl zz+YQT;1k6UdP%3IPpe+m(9nQMKzqM2wE@vsa@S-BU%-t~{XM;XgKu_rcG@226ioo? z{2!@|Z?MPrM3(0F_YW%jM6F;am9~U4irZrGr_kU!(hJDwoCsHd{|Kt&U)o8F?KU8q zNZhNWxab4Rb^@AAvXVp_nuGpdTS>Dm0;17#x2mkK15*oiR+LX(8M-b_p}U%!ni8X7 zV7Uqs-A#bM*8_hvNX2_TRZa2zXq2aqCT*F3_Kvfg0RC4;Q|P@PL4fmmG|I1yhKHpp zDB9IEPrW|W1p;bDQ|P_dAwbes7KfTn=v=dpmP&v+kP=hM9{5?<tltphJB6`<nU7Hk zXp1G6qyArMroeMAi~z7($UBnXHIphx06hCJ%-e3}*>kss07}7&@%a0<8A%r;AQnHn zhBN+oBafb&bp$X~@u?xD?|Vi*ObI~lmsFL%VC2bjvyT8Q_MS>45}(%lG$o)dmUsxc z{|kB#-gA)%z~F2!#h%goHYETie4F*c-t*WHKq=TL>|M253<(hHx@deCYX!Y~2N2+V z#?@>6E3}#n2~Z_vomR-ZcMbuxtvT4{5g;00wAzz;h08g(4K*zjlbV?~c?7h_JC~yR z`D{kOyE=}5Pm%gpXSC)KKwNz=^U}Mzg8(eCvl!<QfL$mp?gZ;;%^-kzwR_XE3~<OH zAQt=J7Oe1xGlJgLB?K@gz{+AoXwM-a#d?>DM%blbJ+)c{)Zv;Y2W;g2FKT7Hd-o7f zIo&0+=MaD$h4t<Q>1obEfOvy=&Lx0(1mu9^<^yN9i-nr(k|gSW8P?5xxZ1Yv8cRH3 z*m?#2k04wHky(Zw!mP3Av+S2x44aGpsxo#5s$Oh~#Y|0!e^oMT$ZnELCX@5Z0DhM= zt?GerL&HUpb}?N$sIa|=$8xu@NbhhVdagOJXb0}WH)GLwe1)pgn+R85Be)ffwB8hx z@5}}`$mQ(t*ws)q%1M$pWxyBCe!u@pbFk^_0A`Oy%&}YO9l+lskzmtn8SsVja3F99 zO#H#IfUGLw>Z~jQ5=)J0!(vshRk<oj&D)a;U{WCA2}aV-t?IENhx+9zHiAD0-ESDm z6N?(UyXeSOs?8FBB3P0g>e}>NPcg#<ACWs@%CQ+|J#5nERIOio_t;j%<fVnoLr@tR z#>HMZ_M~Czc7p&(9C}gWA9hf_a^b>-X=cGjg8o-Qz+=e0LuN9gxf7%JtK_OB;qaok znQU9UQ}oFnH+%1vJ8?}3P#7<{-4B*L!<R09eAH;IG?Qpl8T&}~tw2x3_DLrIKRQLO zxhD{4_#mTCe~m^HOPP{-yVM<!k$BW(t00+CSxycSn;Qlc{%%J{kLh_4*pb-EB;Wnm z?EN1-facG1Y<f-AeT6nyquad-o4Z=k0N-q`$JIA|Sprm?wc~0~g_LvFm{JE$r;jr* zk&6Tx-y<LU5_0u<6OpVls;&Js)$-R0Z5e9sNUT>?^?-xN;bg<NdV@2Mdb0#bQW*(A zj8PqZj;Gkkk^0y$4H3V;+b2~oVZ=HO1>h(#+JS0oO=Dx@pqUJ|m~Mf|&2GFe>mCQ< z(hUL>?kisj$RfpOGBtG!t8&=|i|nhBn_#g1pVcyb8EwKT{X6uUwls(R&!7ZgfSdml z11%h%umfao%YR#X7ec1bmVjzWxm@}v<cBD%$heX^BsP8Lza4fF1Gd?-W;_5A-Wrin z(2HA-Ueilve#8bk==>9wTc0+QDY-jIm$UO9$Q@;w3o=V|y8ln?`=TpqCWAQpuv2pf zW^r00A^$-$x$f@n+G~9S2hrHJn8}pGUCae#2@ny0HC!hWRZ(X=AZNea9P&S3EI`62 z7Iv9OM3=W%9WMDxQOJLz8#)q5k4u3Stroqr&Bz$9i`;Hk3C0(<1N_q!2tIn$>>m-L zp==wFP8_j{BS6Fp;6IM~`(XO;CyOk^Vx7SOg$eL0)4H2ew@6A30cZgKVljOs7Xt~) zaR$**G^R5~3;awhd0&bv?|`}4qsf-*y+r&y5q1s%K34mVSr@Kc5zPsg^Cj5$_HH~L zH#HoK#?L;C4H2y<H#g<@t+WS;iM`gj1cXBKKS3!d`LwJZY(ytvP@&W9$z<N_C3dMl ziP7zT$mCcc+tFVVS)B44_WRpJSUDvi?LfoKlq4cW2g2uKAMVNacsy&x(H=`~<*NEC zfS;G9qJweCBf6e{Mop6v>hpRQoTOI9mCD~608?+Suw!VPR|ELvDp#L$2`|Uhig8Ou zY0fx6IEoyEqWmFlOzYW<XYX1R0x6l*)P=(fJ`%q3imPaZF~r|jlxokD6$FlCz!$=K z1f(5Rd9M{so{W72kim1XH6$P$ZtTJyu`~A7dp-&xK=kp=)2AKM$`}%m7U2A4t)O>5 zb_B5Szg>S!z9|8iU3>$pPk$SGu%3oA0_gi!`B>iRDW(L7#uz6*{ltUM83d5~cZqcj zy*5(<gkUJJ=#MA`f7g5Rp6wwZEIMGFVYseQkbv}PjcB92;5=zP0<g&2W@ep{HxSc% z7SEWEKZpU^N~3q4TVVu{iMv>^DJbUtjU)?}fQ$#J+P4u*mBnr-6NmA7Mecvv41AF$ zO9X@$F8mP2vRlV12<3`5a{udv>`^TfAOxF(i(Ww~c)MJQ8F%3l^-Qah^G-+6r^8YS z5T3v$=6P$@frRvC3cVulS&IP94fWACU>tT$>uPjwnE>HgOd>(?8r;I9()*bqAQ5}k z%Au{ozbyiU2dv~^F@ZfR?!BJ@0z^AuM)MnkH-=8O2@qN$p};Pf0d6zYIEfumO&`Ga zCtI1bC<4+X1pQlK2)la{<E=|N9YdqL79<$jrRs#UkCp~vS!vzP$m-c1te%<Laq7HG z$VXJk<@th!U>im5F?5lBF(Hw)mZ-zRP`J=ughFb@R06b$C*@a^h<=9*_#I@#qI-o! zw*gx4#XYQ;e<n$i7$;2lDGO2ZF-yF4amfGev4AgdbF2giW#Z?3NpBbjtN$G*Km<Je z1=Y(t(MW&GYDC6|+&K7_q!vi;YpPl_jPG430otIv?+I(s$iH`;fJ~4hU)26Fo*xq9 zhm3orUeUOom=Iso)&uN)Q$81wl9hnmU>S?YyXOxngBuv}wJ?b{-6gO0=f*Q~`xRI% z?3X2ZcQDu(b0Z8hon<2+6CqI@#bU`8mH0X=->t&5MoA700qBDuUToypdrNK2VZFgr zCVp;T%T9ncf#M7`x#R3&g?I~yz%gQUHvpQdl^Mgmf;pRZOq(2s-s3cT=BY?sUD*eX z6-9s^TyfU^)&BlFd5YI#$XG8<bp(j>8K;|Y&O$A!jamR&3$k$h8};J&n_k%7U&H(V wg1GaTGVg((9+FwlR9Wt^vO=YggWJ#l2g;&mj3CErqW}N^07*qoM6N<$f(9!asQ>@~ literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/Contents.json new file mode 100644 index 000000000..f5572a291 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "user.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "user@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "user@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user.png b/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea8662c96f15362f87949cf65af3d3140d522cb GIT binary patch literal 599 zcmV-d0;v6oP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004XF*Lt006O% z3;baP0006GNkl<ZI1%MkF^dyX5T4n$a%zI4(*(?EC1R1R#0bJ(mIJ|n7K#z=Jp{3` zu@Wo2L#)Mrpj@k<g+*L!G~DS4;(;kl3ON-t2MLJDzHw%cckHgb*a|KzGy8q-`}Xbk zh6VW7FZ|mEE63(8AkZ0EM}UvlI^ps(jhaS!wYdibw1kLz0I&>13#HP5;>PFR6PwPl z5!K_3lN#s>I&kN0Cp;*(^nwXz(^(Bc>$9B4x5939%ZQ~HOgMvOtJRPI_5)(C-EL2e zDDD}HIRj>@)er&KIln_e5af+UdclM<ShiXX9Y;N4;jY0bx@$z6Lw!#$rRbr-vUTd% zRO|k2AiP1YJ1at*OnNL>eA5YUW{u3Vb%(81OR?DxB2q4m_d1a-O3(Ri#+-4;)Ia91 z*=)|_3&rc-2cu=q>m1KuxcVww;@R6+|M+R1XYn#~3;RlC$EzG!>2|wO(lhnR9Qsbq z>=_X>*yyQ)&i&Qb?bHw-tp}$y>8rfkCL+8j<kTrX{hvwG?Y>g?uT^S3d9~o;HfU+Q zdgGF;6-{zUDnr!J;Mw~EO1<OVy2*vfKIYI}1B9=!CPAh|#6!y&o!8N?_k$sft2MvR zq9LE}XiGym{zK#k!>CLU?GP;1Bn(p-3htelpVedSBSwc=%s&L+!N%N{hDPxV5c+)J lAKV!?TzUDtpYZ!1+utAq##-Y6C@la0002ovPDHLkV1j5X8~gwO literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@2x.png b/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..933f3b71c748cbc5980d5749596aac8d18dd6a76 GIT binary patch literal 1391 zcmV-#1(5oQP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004XF*Lt006O% z3;baP000FhNkl<ZSPAV{TWl0n82<mWmsZ*$&<3eVxm8Sz)?L`$UZA@f6iXUKVoWva z3lSc@MIR)-=!=F2F9h@r0xw=-;{&2;QXvf6l2UdzT|!I@q*`dgMO!YW#kM<hj{lk6 z+1=UhEIV5gW73oCod5i{@0<V3{AU(maV%EgzpVh?5BR{29ZUGNJKH$JW|@z1G0GYr zJdrql{O&^YFNmO`DAl*`^1Xt?djO)=N(QHp!Dq{suzjkk&RA{buPP?!SCnNirT-)V zwv>V+fHP3*dM>G|w@dli*_fT7lwJsdVw!(vA&2lgA{>!FAlZzUK87#Fm^vqOMFjn= z$}SLMdj^P*@#7bseR@MOHt@RqNm=U1PW<FmY&T+zg|kaVcjXU7E>aaY7*L1@&c~u} z7lZW$!v{$JrnDjArDQDnXfeN1I>#0Cg|<F!lA|i!sjI5{$PS>cdg+JKN7`kKjJ5N% z(>o>zz+3Z@4G#|fd@FBl5i_=PIi)2wr!FBmCdfcMl*=c6&B-<rLe2-pN*ga*wPS*` zRZe@_auXf7m^I~cXU7B?;<a3Id?F_om*_Qq(zFP~tEOD;?3kbn*l9|hZXY0&z~-ln z<E<FrrViy1Y7;FPoA3gQ7V|5mb4)N6Q?FAqJ}HwDOOKY)j`Z~Ocnd+gySuA+N<T`E zgj?EVjEpVxyVu$=L7C9yg7>Mf=|*xP!WaLz{%Il5)xW0q(+wEMp!Ah7g+Ar1D{9m- zu|F7ohX{O;0pVW6wXs-qT&@G1+g58cvtuM0`59wxjhs7uP}-c1iYh2UlJSB4)PzrE z0NETshY8MSw9O<N<Y;S8R7y_ftC*lchGE>8>4HK$Y|5O8MpFi4BU!lu!FYh3#<jI| zFP#z7uK?#SXJZj*$J2wz^6Y|qe65kuYOMKoc)0Ix)2H0o(K8qfMmB0F-lgO(3IPw~ zfy}u*E?;6u{Y~mNwMQP)HIXDS`*zb-|3m8^+yXz3$D?IewJd`2q1R{UKB1QJDuGyH z=sBDq#qN=K^hdH~$Hrjfd8*=J0iq$RObgVn@f%l__k+aXi7N%Rc}ok}JS!;z9g!AI zgJ0-#B<~C+mWWAegojqHs6N`?-#=X}wyUeF=FgimyXcno(9QWRK8QEmZg?g!6un^4 z7c5E=^tUT(g{~)v$cjvyAZFhquzksxDz~ug;SVW(0emmr=t~r2;L=S_f{O){XVo#g zL?sFOf{{aXUhI~^>13{*$+M@<*d;4R?{D9_1$6xwRkS|skB864qkHUPZ3%`#%BmFb z@$6CMc6Tn6oJk_krgUn$J|Ne0<C+Iplie|B+Xqujw3y^5&*1$cCrKrS)j^q4$`V6j zNx9gt?SmA!-VC5JH~Lz`Z@ADs)V#XkLT_&`9URVw{HPecGSQ+7tphnUn!Pd~t1zoA zK}xVHn*g90I2_bLgG*yKG+!t(PR;l-C7Yl<x=8?2G!tn|r2&M8N<+sp*3v9rum<Wa zYbdr!R!sVsxuwhmS~`T(nZuT#mwCRN<Ei!ZzP(0CU1mTAU>yOhGj!Ckb8|kdv3+Kk zTv$j+1Kog5%C9}>{wn8am26)U(=8AVH}YB7$ptD@wIETDTYt|uGrnM!|Di|el3*xQ zRt3ir0|R+q=mp-D0Lc&0$;r7jDZ!gK==DT(IRmVbTS{f}q#<alY0Ei?X{yjI2ChjD xvhn(Q@8!O}KF9w{=F?u(ELLE#0{@>1{0nha;h>3dI*I@Q002ovPDHLkV1fzbmfipW literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@3x.png b/ios/RocketChatRN/Images.xcassets/Icons/user.imageset/user@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8960e2bdf2c026c3ded38a592b1da4ff34c9b7a GIT binary patch literal 2118 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 literal 0 HcmV?d00001 diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 3c5c98892..71beab1c4 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -82,13 +82,14 @@ <string>Octicons.ttf</string> <string>SimpleLineIcons.ttf</string> <string>Zocial.ttf</string> - <string>icomoon.ttf</string> <string>Feather.ttf</string> </array> <key>UIRequiredDeviceCapabilities</key> <array> <string>armv7</string> </array> + <key>UIStatusBarStyle</key> + <string>UIStatusBarStyleDefault</string> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> @@ -96,6 +97,6 @@ <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UIViewControllerBasedStatusBarAppearance</key> - <false/> + <true/> </dict> </plist> diff --git a/package-lock.json b/package-lock.json index b1f64825c..b8ea1670c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2154,7 +2154,7 @@ "integrity": "sha512-iOD1PRnTSVr9sDWQdesIpfRrwJhHfeEQe5BpalQxC5OhM9thpiE6cu2NlW1KBWl0RJG4ZiJaF1xLlCo9YxU6dA==" }, "@rocket.chat/sdk": { - "version": "git+https://github.com/RocketChat/Rocket.Chat.js.SDK.git#0814dfc3650476801590d3fd8517632ef50b158c", + "version": "git+https://github.com/RocketChat/Rocket.Chat.js.SDK.git#86d0b0f544ea700f742a66f59a21e1679aa7ff50", "from": "git+https://github.com/RocketChat/Rocket.Chat.js.SDK.git#ddp", "requires": { "@types/lru-cache": "^4.1.0", @@ -4749,6 +4749,12 @@ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", "dev": true }, + "binstring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/binstring/-/binstring-0.2.1.tgz", + "integrity": "sha1-ihdNMB9tVO/aVQ3Zi7TLUk6s110=", + "dev": true + }, "bl": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", @@ -6428,6 +6434,12 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, + "convert-base": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-base/-/convert-base-0.1.0.tgz", + "integrity": "sha1-jadOuY8ei53na9kqPc6X8dN/Mrc=", + "dev": true + }, "convert-source-map": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", @@ -10225,6 +10237,12 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoek": { + "version": "3.0.4", + "resolved": "http://registry.npmjs.org/hoek/-/hoek-3.0.4.tgz", + "integrity": "sha1-Jorf9mu2aVxptHiaiLHghHw/MSM=", + "dev": true + }, "hoist-non-react-statics": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", @@ -11067,6 +11085,12 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, + "isemail": { + "version": "2.2.1", + "resolved": "http://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -12760,6 +12784,18 @@ "merge-stream": "^1.0.1" } }, + "joi": { + "version": "7.3.0", + "resolved": "http://registry.npmjs.org/joi/-/joi-7.3.0.tgz", + "integrity": "sha1-TZyfGBgwRECDZltbbNW4ymd5pek=", + "dev": true, + "requires": { + "hoek": "3.x.x", + "isemail": "2.x.x", + "moment": "2.x.x", + "topo": "2.x.x" + } + }, "js-base64": { "version": "2.4.9", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", @@ -14863,6 +14899,23 @@ "os-tmpdir": "^1.0.0" } }, + "otp.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/otp.js/-/otp.js-1.1.0.tgz", + "integrity": "sha1-UCBUh7AcnlvvqgY0WHBMCVnDXVg=", + "dev": true, + "requires": { + "big-integer": "^1.6.9", + "binstring": "^0.2.1", + "convert-base": "^0.1.0", + "joi": "^7.0.1", + "pad-component": "0.0.1", + "qr-image": "^3.1.0", + "thirty-two": "^1.0.1", + "uid-safe": "^2.0.0", + "underscore": "^1.8.3" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -14923,6 +14976,12 @@ "thunkify": "^2.1.2" } }, + "pad-component": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pad-component/-/pad-component-0.0.1.tgz", + "integrity": "sha1-rR8izhvw/cDW3dkIrxfzUaQEuKw=", + "dev": true + }, "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", @@ -16605,6 +16664,12 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, + "qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug=", + "dev": true + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -16691,6 +16756,12 @@ "ramda": "^0.24.1" } }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, "randomatic": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", @@ -17208,9 +17279,9 @@ } }, "react-native-gesture-handler": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.0.8.tgz", - "integrity": "sha512-Lc6PV5nKXgZdDeky96yi6gAM1UJHaYwzZbZyph0YuSv/L6vTtN+KPGsKyIENoOyxLJ/i43MSNn7fR+Xbv0w/xA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.0.9.tgz", + "integrity": "sha512-TPaiS8cAGqQA9p1GwjDbgMyNVCO/7cWC05h1rWIX2ZLoB1oSxGEBi5Es211HpBUmsTAzrUGH7M+ASGkAQeYH/A==", "requires": { "hoist-non-react-statics": "^2.3.1", "invariant": "^2.2.2", @@ -17336,9 +17407,9 @@ } }, "react-is": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.6.0.tgz", - "integrity": "sha512-q8U7k0Fi7oxF1HvQgyBjPwDXeMplEsArnKt2iYhuIF86+GBbgLHdAmokL3XUFjTd7Q363OSNG55FOGUdONVn1g==" + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.6.1.tgz", + "integrity": "sha512-wOKsGtvTMYs7WAscmwwdM8sfRRvE17Ym30zFj3n37Qx5tHRfhenPKEPILHaHob6WoLFADmQm1ZNrE5xMCM6sCw==" }, "react-lifecycles-compat": { "version": "2.0.0", @@ -20521,6 +20592,12 @@ } } }, + "thirty-two": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", + "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno=", + "dev": true + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", @@ -20632,6 +20709,23 @@ "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==" }, + "topo": { + "version": "2.0.2", + "resolved": "http://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true, + "requires": { + "hoek": "4.x.x" + }, + "dependencies": { + "hoek": { + "version": "4.2.1", + "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + } + } + }, "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", @@ -20847,6 +20941,15 @@ } } }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", diff --git a/package.json b/package.json index 9aa8efd9a..fdcd3d97f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "react-native-dialog": "^5.4.0", "react-native-fabric": "github:corymsmith/react-native-fabric#523a4edab3b2bf55ea9eeea2cf0dde82c5c29dd4", "react-native-fast-image": "^5.0.11", - "react-native-gesture-handler": "^1.0.8", + "react-native-gesture-handler": "^1.0.9", "react-native-i18n": "^2.0.15", "react-native-image-crop-picker": "git+https://github.com/RocketChat/react-native-image-crop-picker.git", "react-native-image-zoom-viewer": "^2.2.21", @@ -100,6 +100,7 @@ "jest-cli": "^23.6.0", "metro-react-native-babel-preset": "^0.45.6", "mocha": "^5.2.0", + "otp.js": "^1.1.0", "react-dom": "16.6.0-alpha.8af6728", "react-test-renderer": "16.6.0-alpha.8af6728", "reactotron-react-native": "^2.1.0", diff --git a/resources/fonts/icomoon.ttf b/resources/fonts/icomoon.ttf deleted file mode 100755 index 3601ae802a70d87413410b7655bcf92d5685e5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2084 zcmaJ?O>7%g5T3Vx{z>h`wY{6Tabm~yZkk^ww$~(as<f%1HnpKjs<uD{byGJDO5!MS zL@QOOLa2vQN~r`Qkq`)RLqbS7ltT_a6aiApp$7y#aG+A976}dr3Dm~nd+QAZQSrPp z@0)ou^X9#s9TOv>I=Vz6C7zq??XTY{KY?Z)bZTm@u%I2gdzFYaLq0lPSX#i`0GZFu z>Ddcse;T;{4&?Jh(!q1Z!kLDN7iA*3f_3v86wZ@U5%M39cb}UppKn<eJ|t3jy!P4B zR6%-09D{rSvN~5dzkuk=kWWI6%opa0E90)mkS}77%L}EYGV;W5N_?F}@eaFA*iTpy zZbS2SZDv1HlDW9uw!x70zsCsCLs_hBR%k>7VUgd()`(bu@5ZSaYqeRlteQ!pXP|eJ zlLY)2MIOqV8=IS!SL7jCm~GzIB=~KQ%ZS0Mew$7p$_!X0|JeP%4y&6L1g;>q18Mt` zJ{Ao|+07g5<`ZNlRyeO7x`AwDTB4-*mYB!QMyZ<yXq3qB3#iFxznS)>^jNe_3C2<; zWHsmuD3JBEPX>bys(@m^5Oy#Ns17ZoWekVm&?<UJppdSIs^Iy_L4gJ*CkLzG%##=$ zO>k;Z)drAq?T1%;KD~GC`;<`O)?1!i4&3>-nnz+ZZ@Iwj*VA`S?0xOq!q@zwah`kB zF6uZ(f}W?dv`7?p7(L8>bUq{H%wCp3+FA?Kkh;Um913T($KZ>WMLK2K$J#85V8F8H z3=fRNZKsc=w;f+-YHDJN?5KBYy=rTyDduu%+L5$5JZz?qXqw9vYYMfhy_&P$AuDW$ z+7Sq=YOB-b+c{*kcXziNLpyygXRE4)10AZQh@v8S_$_eS6_4)%Wdi|0mK3kEF%|CU z>^RZY)jgc%!TCn%;qI=k6Htd!jZUv3$-+y)zK|Z*bGjbyHjE)3#*krj$91UUdZ;fb zIz&8-CI*KlCWZzla(amG6w>k8ki2<IS{2txr5LJ0=a-|g7KWGZU<$v}j9+vyzh<gI zRq13RlNGtn9rj8Co`wd`<FCA7cb($6bxVBo<fC_g2{g0j;Gb8-Q{qKWOPyO$stKjh z>uuz-;;svO**aUV9$@9_=K?JK&DC#M*{;#EVnqz$EjwukX|#*iXw(;tgE1}b$e3!F z1(aTv&cvhXXoam+^8#(G3Hi0P4~%Tqc=TxFJ(jPo3CZdub}7H{KnPVo9=t#J#*VJ` z2Yb3axgT?1<ar&*s3RS9^a6SCRYxdJ=sm1WL3lOUZw|ARZuDE5#oBa8W>O3$(++%I zX;HPxB-wA3P{yz-ONq5vrDQk+>d0n0IE~NDjC0a+6_%>rzRLXm@r-%!pqUx>`&o{8 zy=MC!)7;Z;dc7<sda|7>omq?JXAZA$&y~Y78!H&86uW(N-^g)IRkh<I`;M}){^b4! zjQz>}vA=r;!0UIP{qp7d?C(^^TO-kTxi@)FwP$pTRdfq9PQ3HlfREMtNLu9za4Vd> z$|rX%Qcc6%xC~kX-GjZng)Iv=1*nBm^gi3qF0*xEH?%yW8~q0z8e?l`OR$-jKC|~_ zyp!2j06t}7-r-CeOTf!EmhrC@w6OyHVH>+CL|1svm0Zwxu~NeV@U)FZ;9(m}z!z;S z<2#7hSb=`R#%`SJlbNZ~T&XlqGc-jdngf++{#bEwX{IzE>FY_*F)E@fEx`Z_h|@<s zlz6JwQ<W3N>E+qNA~r1|(Pf&Y0xdq(a;!98j!YNli;IPF@l53Og~*|)QXaYW(3rJ% l8M{v-%)FIRfy$WAKzEuhfFH6Bkgpv8Iie7@zmosrzW{V{QOW=S -- GitLab