status-desktop/ui/nim-status-client.pro

385 lines
16 KiB
Prolog
Raw Normal View History

QT += quick
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
2020-06-18 20:11:12 +00:00
lupdate_only{
SOURCES = *.qml \
app/*.qml \
shared/*.qml \
shared/status/*.qml \
onboarding/*.qml \
onboarding/Login/*.qml \
2020-06-18 20:11:12 +00:00
app/AppLayouts/*.qml \
app/AppLayouts/Chat/*.qml \
app/AppLayouts/Chat/ChatColumn/*.qml \
2020-08-26 15:52:26 +00:00
app/AppLayouts/Chat/ChatColumn/ChatComponents/*.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/*.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/TransactionComponents/*.qml \
app/AppLayouts/Chat/ContactsColumn/*.qml \
2020-06-18 20:11:12 +00:00
app/AppLayouts/Chat/components/*.qml \
app/AppLayouts/Node/*.qml \
app/AppLayouts/Profile/*.qml \
app/AppLayouts/Profile/LeftTab/*.qml \
2020-08-26 15:52:26 +00:00
app/AppLayouts/Profile/LeftTab/components/*.qml \
2020-06-18 20:11:12 +00:00
app/AppLayouts/Profile/Sections/*.qml \
app/AppLayouts/Profile/Sections/Contacts/*.qml \
app/AppLayouts/Profile/Sections/Ens/*.qml \
2020-06-18 20:11:12 +00:00
app/AppLayouts/Wallet/*.qml \
chore: refactor Linux and macOS build/packaging steps Replaces PR #105. Implement a `pkg-macos` target that ultimately results in `Status.dmg` being written to `pkg/`. Due to [limitations][limits] of the OpenSSL `.dylib`s in `/usr/lib/` on macOS, `libssl.a` and `libcrypto.a` are statically linked into `bin/nim_status_client` from a [Homebrew][brew] "bottle" that is compatible with macOS 10.13 (the oldest macOS version compatible with Qt v5.14). `pkg-macos` creates an `.app` bundle layout in `tmp/macos/dist` based partly on information in a very helpful [StackOverflow answer][so-answer]. Note the part of the answer (toward the end) that explains a problem with the working directory and how to fix it. That's the reason for the `nim_status_client.sh` script introduced in this commit (it gets copied into the bundle). It's also the reason for having `Info.plist` copied into the bundle before `macdeployqt` is run (see below) and then overwriting it with `Info.runner.plist` before creating the `.dmg` file. The app icons file `status-icon.icns` was taken from `deployment/macos/` in the [status-react][sr] repo. The [`macdeployqt`][macdeployqt] tool is used to copy the needed portions of Qt into the bundle; it automatically updates `rpath`, etc. so the `nim_status_client` executable in the bundle can locate the libs within the bundle. `macdeployqt` is run twice, for the "outer" and "inner" `.app` bundles, because of an apparent bug in `macdeployqt` that results in QtWebEngine related resources not being processed correctly on the first pass. This results in some bloat in the final bundle but it seems unavoidable at present. The [create-dmg][cdmg] tool is used to package the bundle into a `.dmg` file. There are two reasons for this: 1. It produces a nice looking icon for the `.dmg` that overlays the Status logo on an external disk icon. 2. `Info.plist` needs to be overwritten after running `macdeployqt` (see explanation above) but before creating the `.dmg` file. If we passed the `-dmg` cli option to `macdeployqt` to have it generate the `.dmg` file then it wouldn't be possible to overwrite `Info.plist`. So there is a cosmetic reason and a practical reason for using another tool. Probably the biggest downside is that `create-dmg` is implemented in Node.js so it needs to be installed with `npm`; that's the reason this commit introduces `package.json`, etc. Note that zero code from `node_modules` ends up in the `.app` bundle or the `.dmg` file. Code signing of the macOS `.app` bundle and `.dmg` is attempted if the environment variable `MACOS_CODESIGN_IDENT` is defined. In that case, the environment variable `MACOS_KEYCHAIN_OPT` may optionally be defined with the path to a preferred keychain database file. Refactor a number of sections in the Makefile for consistency's sake, e.g. the `appimage` target becomes `pkg-linux` and ultimately results in `NimStatusClient-x86_64.AppImage` being written to `pkg/`. Make a number of changes to bring the Linux packaging steps up-to-date and use the `-qmlimport` cli option of `linuxdeployqt` to simplify resolution of Qt plugins. Note that `make pkg` will correctly resolve to `make pkg-linux` or `make pkg-macos` depending on the OS in use. Consistently use lower-case "c" in the name of *components* directories and imports. [limits]: https://developer.apple.com/forums/thread/124782 [brew]: https://brew.sh/ [so-answer]: https://stackoverflow.com/a/3251285 [sr]: https://github.com/status-im/status-react/tree/develop/deployment/macos [macdeployqt]: https://doc.qt.io/qt-5/macos-deployment.html [cdmg]: https://github.com/sindresorhus/create-dmg
2020-06-04 20:56:44 +00:00
app/AppLayouts/Wallet/components/*.qml \
app/AppLayouts/Wallet/components/collectiblesComponents/*.qml \
app/AppLayouts/Wallet/data/Currencies.qml \
2020-06-18 20:11:12 +00:00
}
TRANSLATIONS += \
i18n/base.ts \
i18n/qml_af.ts \
i18n/qml_ar.ts \
i18n/qml_bel.ts \
i18n/qml_cs.ts \
i18n/qml_da.ts \
i18n/qml_de.ts \
i18n/qml_de_ch.ts \
i18n/qml_el.ts \
i18n/qml_en.ts \
i18n/qml_es.ts \
i18n/qml_es_419.ts \
i18n/qml_es_ar.ts \
i18n/qml_es_mx.ts \
i18n/qml_fa.ts \
i18n/qml_fi.ts \
i18n/qml_fil.ts \
i18n/qml_fr.ts \
i18n/qml_fr_ch.ts \
i18n/qml_fy.ts \
i18n/qml_he.ts \
i18n/qml_hi.ts \
i18n/qml_hu.ts \
i18n/qml_id.ts \
i18n/qml_it.ts \
i18n/qml_it_ch.ts \
i18n/qml_ja.ts \
i18n/qml_ko.ts \
i18n/qml_la.ts \
i18n/qml_lt.ts \
i18n/qml_lv.ts \
i18n/qml_ms.ts \
i18n/qml_nb.ts \
i18n/qml_ne.ts \
i18n/qml_nl.ts \
i18n/qml_pl.ts \
i18n/qml_pt.ts \
i18n/qml_pt_BR.ts \
i18n/qml_pt_pt.ts \
i18n/qml_ro.ts \
i18n/qml_ru.ts \
i18n/qml_sl.ts \
i18n/qml_sr_rs_cyrl.ts \
i18n/qml_sr_rs_latn.ts \
i18n/qml_sv.ts \
i18n/qml_sw.ts \
i18n/qml_th.ts \
i18n/qml_tr.ts \
i18n/qml_uk.ts \
i18n/qml_ur.ts \
i18n/qml_vi.ts \
i18n/qml_zh.ts \
i18n/qml_zh_Hans_CN.ts \
i18n/qml_zh_TW.ts \
i18n/qml_zh_hans.ts \
i18n/qml_zh_hant.ts \
i18n/qml_zh_hant_hk.ts \
i18n/qml_zh_hant_sg.ts \
i18n/qml_zh_hant_tw.ts \
i18n/qml_zh_wuu.ts \
2020-08-14 17:26:36 +00:00
i18n/qml_zh_yue.ts
2020-06-18 20:55:01 +00:00
RESOURCES += \
2020-05-28 14:58:25 +00:00
imports/Constants.qml \
imports/Style.qml \
main.qml
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH = $$PWD/imports
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH = $$PWD/imports
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
DISTFILES += \
app/AppLayouts/Chat/ChatColumn/ChatComponents/ChatCommandButton.qml \
2020-09-03 20:14:44 +00:00
app/AppLayouts/Chat/ChatColumn/ChatComponents/ChatCommandModal.qml \
app/AppLayouts/Chat/ChatColumn/ChatComponents/ChatCommandsPopup.qml \
app/AppLayouts/Chat/ChatColumn/ChatComponents/ChatInputButton.qml \
2020-09-03 20:14:44 +00:00
app/AppLayouts/Chat/ChatColumn/ChatComponents/RequestModal.qml \
app/AppLayouts/Chat/ChatColumn/ChatComponents/SignTransactionModal.qml \
app/AppLayouts/Chat/ChatColumn/CompactMessage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChannelIdentifier.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatImage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatReply \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatReply.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatText.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatTime.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/CompactMessage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/DateGroup.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/EmojiReactions.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ImageLoader.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/ImageMessage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/MessageMouseArea.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/NormalMessage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/RectangleCorner.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/SentMessage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/Sticker.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/TransactionBubble.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/TransactionComponents/AcceptTransaction.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/TransactionComponents/SendTransactionButton.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/TransactionComponents/StateBubble.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/UserImage.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/UsernameLabel.qml \
app/AppLayouts/Chat/ChatColumn/MessageComponents/qmldir \
app/AppLayouts/Chat/ContactsColumn/AddChat.qml \
app/AppLayouts/Chat/ContactsColumn/ClosedEmptyView.qml \
app/AppLayouts/Chat/components/EmojiCategoryButton.qml \
app/AppLayouts/Chat/components/EmojiPopup.qml \
app/AppLayouts/Chat/components/EmojiReaction.qml \
2020-09-17 14:26:26 +00:00
app/AppLayouts/Chat/components/ProfilePopup.qml \
app/AppLayouts/Chat/components/EmojiSection.qml \
2020-07-09 15:21:45 +00:00
app/AppLayouts/Chat/components/InviteFriendsPopup.qml \
app/AppLayouts/Chat/components/MessageContextMenu.qml \
2020-09-16 16:00:21 +00:00
app/AppLayouts/Chat/components/NicknamePopup.qml \
app/AppLayouts/Chat/components/SuggestedChannels.qml \
app/AppLayouts/Chat/data/channelList.js \
app/AppLayouts/Profile/LeftTab/Constants.js \
app/AppLayouts/Profile/LeftTab/components/MenuButton.qml \
app/AppLayouts/Chat/data/EmojiReactions.qml \
app/AppLayouts/Profile/Sections/AppearanceContainer.qml \
app/AppLayouts/Profile/Sections/BackupSeedModal.qml \
app/AppLayouts/Profile/Sections/MyProfileContainer.qml \
app/AppLayouts/Profile/Sections/SoundsContainer.qml \
app/AppLayouts/UIComponents/UIComponents.qml \
app/AppLayouts/Wallet/ReceiveModal.qml \
2020-07-15 19:38:03 +00:00
app/AppLayouts/Wallet/components/HeaderButton.qml \
2020-07-20 14:28:32 +00:00
app/AppLayouts/Profile/Sections/Data/locales.js \
app/AppLayouts/Wallet/components/collectiblesComponents/CollectiblesContainer.qml \
2020-08-18 20:11:36 +00:00
app/AppLayouts/Wallet/components/collectiblesComponents/CollectiblesContent.qml \
app/AppLayouts/Wallet/components/collectiblesComponents/CollectiblesHeader.qml \
app/AppLayouts/Wallet/components/collectiblesComponents/CollectiblesModal.qml \
app/AppLayouts/Wallet/components/collectiblesComponents/CollectiblesModalContent.qml \
app/AppLayouts/Wallet/components/collectiblesComponents/collectiblesData.js \
app/AppLayouts/Wallet/data/Tokens.qml \
fonts/InterStatus/InterStatus-Black.otf \
fonts/InterStatus/InterStatus-BlackItalic.otf \
fonts/InterStatus/InterStatus-Bold.otf \
fonts/InterStatus/InterStatus-BoldItalic.otf \
fonts/InterStatus/InterStatus-ExtraBold.otf \
fonts/InterStatus/InterStatus-ExtraBoldItalic.otf \
fonts/InterStatus/InterStatus-ExtraLight.otf \
fonts/InterStatus/InterStatus-ExtraLightItalic.otf \
fonts/InterStatus/InterStatus-Italic.otf \
fonts/InterStatus/InterStatus-Light.otf \
fonts/InterStatus/InterStatus-LightItalic.otf \
fonts/InterStatus/InterStatus-Medium.otf \
fonts/InterStatus/InterStatus-MediumItalic.otf \
fonts/InterStatus/InterStatus-Regular.otf \
fonts/InterStatus/InterStatus-SemiBold.otf \
fonts/InterStatus/InterStatus-SemiBoldItalic.otf \
fonts/InterStatus/InterStatus-Thin.otf \
fonts/InterStatus/InterStatus-ThinItalic.otf \
Theme.qml \
app/AppLayouts/Chat/ChatColumn.qml \
app/AppLayouts/Chat/ChatColumn/samples/MessagesData.qml \
app/AppLayouts/Chat/ChatColumn/samples/StickerData.qml \
app/AppLayouts/Chat/ChatColumn/samples/StickerPackData.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Chat/ChatColumn/ChatInput.qml \
app/AppLayouts/Chat/ChatColumn/ChatButtons.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Chat/ChatColumn/ChatMessages.qml \
app/AppLayouts/Chat/ChatColumn/EmptyChat.qml \
app/AppLayouts/Chat/ChatColumn/Message.qml \
app/AppLayouts/Chat/ChatColumn/ReplyArea.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Chat/ChatColumn/TopBar.qml \
app/AppLayouts/Chat/ChatColumn/qmldir \
feat: layouts for the Profile screens Work on this PR started before the build system was updated and at one point I upgraded `nim_status_client.nimble` to use NimScript so the nimble command would stop warning that the old format was being used. In team chat it was discussed that since we're no longer using nimble for package management we could simply delete `nim_status_client.nimble` to avoid confusion, which can be done in another PR. Introduce a BrowserLayout stub so the index will be calcualted correctly re: the active tab. Reorganize ChatLayout and NodeLayout into subdirs `Chat` and `Node`, respectively. Introduce ProfileLayout which uses a "LeftTab" approach similar to that of WalletLayout. There remains quite a bit of styling work to be done in ProfileLayout and its LeftTab. Also, it may be better to start over using a SplitView like the ChatLayout, I'm not really sure. It wasn't clear what should be the default view for the right-pane when Profile is selected in the left-most TabBar. In this PR, it defaults to showing the view corresponding to the ENS usernames button. In the archived Figma for the desktop design, it seemed a picture could be set, e.g. there is a headshot of a woman used in the Profile screen. To that end I explored how to take a square image and clip/mask it so it appears round and I included a larger placeholder image for that purpose. In the new design, and with respect to mobile, it may not be possible to set a profile picture so the code that rounds the image can maybe be dropped.
2020-05-19 19:44:45 +00:00
app/AppLayouts/Chat/ChatLayout.qml \
app/AppLayouts/Chat/ContactsColumn.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Chat/ContactsColumn/Channel.qml \
app/AppLayouts/Chat/ContactsColumn/ChannelList.qml \
app/AppLayouts/Chat/ContactsColumn/EmptyView.qml \
app/AppLayouts/Chat/ContactsColumn/qmldir \
2020-06-17 15:56:48 +00:00
app/AppLayouts/Chat/components/GroupChatPopup.qml \
app/AppLayouts/Chat/components/PublicChatPopup.qml \
2020-05-28 12:56:43 +00:00
app/AppLayouts/Chat/components/PrivateChatPopup.qml \
2020-06-15 12:51:04 +00:00
app/AppLayouts/Chat/components/RenameGroupPopup.qml \
app/AppLayouts/Chat/components/SuggestedChannel.qml \
app/AppLayouts/Chat/components/StickerButton.qml \
app/AppLayouts/Chat/components/StickerMarket.qml \
app/AppLayouts/Chat/components/StickersPopup.qml \
app/AppLayouts/Chat/components/StickerPackIconWithIndicator.qml \
app/AppLayouts/Chat/components/qmldir \
app/AppLayouts/Chat/qmldir \
feat: layouts for the Profile screens Work on this PR started before the build system was updated and at one point I upgraded `nim_status_client.nimble` to use NimScript so the nimble command would stop warning that the old format was being used. In team chat it was discussed that since we're no longer using nimble for package management we could simply delete `nim_status_client.nimble` to avoid confusion, which can be done in another PR. Introduce a BrowserLayout stub so the index will be calcualted correctly re: the active tab. Reorganize ChatLayout and NodeLayout into subdirs `Chat` and `Node`, respectively. Introduce ProfileLayout which uses a "LeftTab" approach similar to that of WalletLayout. There remains quite a bit of styling work to be done in ProfileLayout and its LeftTab. Also, it may be better to start over using a SplitView like the ChatLayout, I'm not really sure. It wasn't clear what should be the default view for the right-pane when Profile is selected in the left-most TabBar. In this PR, it defaults to showing the view corresponding to the ENS usernames button. In the archived Figma for the desktop design, it seemed a picture could be set, e.g. there is a headshot of a woman used in the Profile screen. To that end I explored how to take a square image and clip/mask it so it appears round and I included a larger placeholder image for that purpose. In the new design, and with respect to mobile, it may not be possible to set a profile picture so the code that rounds the image can maybe be dropped.
2020-05-19 19:44:45 +00:00
app/AppLayouts/Node/NodeLayout.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Profile/LeftTab.qml \
app/AppLayouts/Profile/LeftTab/Menu.qml \
app/AppLayouts/Profile/LeftTab/Profile.qml \
2020-05-27 20:57:36 +00:00
app/AppLayouts/Profile/LeftTab/qmldir \
feat: layouts for the Profile screens Work on this PR started before the build system was updated and at one point I upgraded `nim_status_client.nimble` to use NimScript so the nimble command would stop warning that the old format was being used. In team chat it was discussed that since we're no longer using nimble for package management we could simply delete `nim_status_client.nimble` to avoid confusion, which can be done in another PR. Introduce a BrowserLayout stub so the index will be calcualted correctly re: the active tab. Reorganize ChatLayout and NodeLayout into subdirs `Chat` and `Node`, respectively. Introduce ProfileLayout which uses a "LeftTab" approach similar to that of WalletLayout. There remains quite a bit of styling work to be done in ProfileLayout and its LeftTab. Also, it may be better to start over using a SplitView like the ChatLayout, I'm not really sure. It wasn't clear what should be the default view for the right-pane when Profile is selected in the left-most TabBar. In this PR, it defaults to showing the view corresponding to the ENS usernames button. In the archived Figma for the desktop design, it seemed a picture could be set, e.g. there is a headshot of a woman used in the Profile screen. To that end I explored how to take a square image and clip/mask it so it appears round and I included a larger placeholder image for that purpose. In the new design, and with respect to mobile, it may not be possible to set a profile picture so the code that rounds the image can maybe be dropped.
2020-05-19 19:44:45 +00:00
app/AppLayouts/Profile/ProfileLayout.qml \
app/AppLayouts/Profile/Sections/Contacts/Contact.qml \
app/AppLayouts/Profile/Sections/Contacts/ContactList.qml \
app/AppLayouts/Profile/Sections/Contacts/qmldir \
app/AppLayouts/Profile/Sections/Contacts/samples/ContactsData.qml \
app/AppLayouts/Profile/Sections/Contacts/samples/qmldir \
app/AppLayouts/Wallet/AccountSettingsModal.qml \
app/AppLayouts/Wallet/AddCustomTokenModal.qml \
2020-05-28 14:54:42 +00:00
app/AppLayouts/Wallet/AssetsTab.qml \
app/AppLayouts/Wallet/CollectiblesTab.qml \
chore: refactor Linux and macOS build/packaging steps Replaces PR #105. Implement a `pkg-macos` target that ultimately results in `Status.dmg` being written to `pkg/`. Due to [limitations][limits] of the OpenSSL `.dylib`s in `/usr/lib/` on macOS, `libssl.a` and `libcrypto.a` are statically linked into `bin/nim_status_client` from a [Homebrew][brew] "bottle" that is compatible with macOS 10.13 (the oldest macOS version compatible with Qt v5.14). `pkg-macos` creates an `.app` bundle layout in `tmp/macos/dist` based partly on information in a very helpful [StackOverflow answer][so-answer]. Note the part of the answer (toward the end) that explains a problem with the working directory and how to fix it. That's the reason for the `nim_status_client.sh` script introduced in this commit (it gets copied into the bundle). It's also the reason for having `Info.plist` copied into the bundle before `macdeployqt` is run (see below) and then overwriting it with `Info.runner.plist` before creating the `.dmg` file. The app icons file `status-icon.icns` was taken from `deployment/macos/` in the [status-react][sr] repo. The [`macdeployqt`][macdeployqt] tool is used to copy the needed portions of Qt into the bundle; it automatically updates `rpath`, etc. so the `nim_status_client` executable in the bundle can locate the libs within the bundle. `macdeployqt` is run twice, for the "outer" and "inner" `.app` bundles, because of an apparent bug in `macdeployqt` that results in QtWebEngine related resources not being processed correctly on the first pass. This results in some bloat in the final bundle but it seems unavoidable at present. The [create-dmg][cdmg] tool is used to package the bundle into a `.dmg` file. There are two reasons for this: 1. It produces a nice looking icon for the `.dmg` that overlays the Status logo on an external disk icon. 2. `Info.plist` needs to be overwritten after running `macdeployqt` (see explanation above) but before creating the `.dmg` file. If we passed the `-dmg` cli option to `macdeployqt` to have it generate the `.dmg` file then it wouldn't be possible to overwrite `Info.plist`. So there is a cosmetic reason and a practical reason for using another tool. Probably the biggest downside is that `create-dmg` is implemented in Node.js so it needs to be installed with `npm`; that's the reason this commit introduces `package.json`, etc. Note that zero code from `node_modules` ends up in the `.app` bundle or the `.dmg` file. Code signing of the macOS `.app` bundle and `.dmg` is attempted if the environment variable `MACOS_CODESIGN_IDENT` is defined. In that case, the environment variable `MACOS_KEYCHAIN_OPT` may optionally be defined with the path to a preferred keychain database file. Refactor a number of sections in the Makefile for consistency's sake, e.g. the `appimage` target becomes `pkg-linux` and ultimately results in `NimStatusClient-x86_64.AppImage` being written to `pkg/`. Make a number of changes to bring the Linux packaging steps up-to-date and use the `-qmlimport` cli option of `linuxdeployqt` to simplify resolution of Qt plugins. Note that `make pkg` will correctly resolve to `make pkg-linux` or `make pkg-macos` depending on the OS in use. Consistently use lower-case "c" in the name of *components* directories and imports. [limits]: https://developer.apple.com/forums/thread/124782 [brew]: https://brew.sh/ [so-answer]: https://stackoverflow.com/a/3251285 [sr]: https://github.com/status-im/status-react/tree/develop/deployment/macos [macdeployqt]: https://doc.qt.io/qt-5/macos-deployment.html [cdmg]: https://github.com/sindresorhus/create-dmg
2020-06-04 20:56:44 +00:00
app/AppLayouts/Wallet/components/AccountSettingsModal.qml \
app/AppLayouts/Wallet/components/AddAccount.qml \
app/AppLayouts/Wallet/components/AddAccountWithPrivateKey.qml \
app/AppLayouts/Wallet/components/AddAccountWithSeed.qml \
app/AppLayouts/Wallet/components/AddWatchOnlyAccount \
app/AppLayouts/Wallet/components/AddWatchOnlyAccount.qml \
app/AppLayouts/Wallet/components/GenerateAccountModal.qml \
app/AppLayouts/Wallet/components/SendModalContent.qml \
app/AppLayouts/Wallet/components/SetCurrencyModalContent.qml \
app/AppLayouts/Wallet/components/TokenSettingsModalContent.qml \
app/AppLayouts/Wallet/components/qmldir \
2020-05-28 14:54:42 +00:00
app/AppLayouts/Wallet/HistoryTab.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Profile/Sections/AboutContainer.qml \
app/AppLayouts/Profile/Sections/AdvancedContainer.qml \
app/AppLayouts/Profile/Sections/ContactsContainer.qml \
app/AppLayouts/Profile/Sections/EnsContainer.qml \
app/AppLayouts/Profile/Sections/HelpContainer.qml \
app/AppLayouts/Profile/Sections/LanguageContainer.qml \
app/AppLayouts/Profile/Sections/NotificationsContainer.qml \
app/AppLayouts/Profile/Sections/PrivacyContainer.qml \
app/AppLayouts/Profile/Sections/SignoutContainer.qml \
app/AppLayouts/Profile/Sections/SyncContainer.qml \
2020-07-03 16:54:27 +00:00
app/AppLayouts/Profile/Sections/DevicesContainer.qml \
2020-05-28 16:47:42 +00:00
app/AppLayouts/Profile/Sections/qmldir \
app/AppLayouts/Profile/qmldir \
app/AppLayouts/Wallet/LeftTab.qml \
2020-05-27 20:50:39 +00:00
app/AppLayouts/Wallet/SendModal.qml \
app/AppLayouts/Wallet/SetCurrencyModal.qml \
2020-06-03 16:49:18 +00:00
app/AppLayouts/Wallet/TokenSettingsModal.qml \
app/AppLayouts/Wallet/WalletHeader.qml \
app/AppLayouts/Wallet/WalletLayout.qml \
app/AppLayouts/Wallet/data/Currencies.qml \
app/AppLayouts/Wallet/qmldir \
2020-06-03 16:49:18 +00:00
app/AppLayouts/Wallet/tokens/Tokens.qml \
app/AppLayouts/Wallet/tokens/qmldir \
2020-05-13 18:17:18 +00:00
app/AppLayouts/WalletLayout.qml \
app/AppLayouts/qmldir \
app/AppMain.qml \
app/img/arrow-btn-active.svg \
app/img/arrow-btn-inactive.svg \
app/img/compass.svg \
app/img/compassActive.svg \
app/img/group_chat.svg \
app/img/hash.svg \
app/img/history_icon.svg \
app/img/message.svg \
app/img/messageActive.svg \
app/img/new_chat.svg \
app/img/profile.svg \
app/img/profileActive.svg \
app/img/public_chat.svg \
app/img/search.svg \
app/img/wallet.svg \
app/img/status-logo-no-bg.svg \
app/img/stickers_icon.svg \
app/img/stickers_icon_open.svg \
app/img/stickers_sad_icon.svg \
app/img/walletActive.svg \
app/qmldir \
2020-06-26 01:23:38 +00:00
imports/Emoji.qml \
imports/Themes/DarkTheme.qml \
imports/Themes/LightTheme.qml \
imports/Themes/Theme.qml \
imports/Themes/qmldir \
imports/Utils.qml \
imports/qmldir \
2020-06-12 20:47:44 +00:00
onboarding/CreatePasswordModal.qml \
onboarding/EnterSeedPhraseModal.qml \
onboarding/ExistingKey.qml \
onboarding/GenKey.qml \
2020-06-13 15:17:54 +00:00
onboarding/GenKeyModal.qml \
onboarding/Intro.qml \
onboarding/KeysMain.qml \
onboarding/Login.qml \
2020-06-03 20:50:59 +00:00
onboarding/Login/AccountList.qml \
onboarding/Login/AddressView.qml \
2020-06-12 20:47:44 +00:00
onboarding/Login/ConfirmAddExistingKeyModal.qml \
onboarding/Login/SelectAnotherAccountModal.qml \
2020-06-03 20:50:59 +00:00
onboarding/Login/qmldir \
onboarding/Login/samples/AccountsData.qml \
onboarding/Login/samples/qmldir \
onboarding/OnboardingMain.qml \
2020-06-03 19:49:47 +00:00
onboarding/Slide.qml \
onboarding/img/browser-dark@2x.jpg \
onboarding/img/browser-dark@3x.jpg \
onboarding/img/browser@2x.jpg \
onboarding/img/browser@3x.jpg \
onboarding/img/chat-dark@2x.jpg \
onboarding/img/chat-dark@3x.jpg \
onboarding/img/chat@2x.jpg \
onboarding/img/chat@3x.jpg \
onboarding/img/key.png \
onboarding/img/key@2x.png \
onboarding/img/next.svg \
onboarding/img/wallet-dark@2x.jpg \
onboarding/img/wallet-dark@3x.jpg \
onboarding/img/wallet@2x.jpg \
onboarding/img/wallet@3x.jpg \
onboarding/qmldir \
shared/AccountSelector.qml \
shared/AddButton.qml \
shared/Address.qml \
feat(tx-comps): Send transaction modal Fixes #669. Composes all tx components to create a send transaction modal for the wallet. 1. Add a reusable TransactionStackView component that wraps a StackView component to show the screens of the Send Tx modal and handles back/forward/reset functionality. 2. Add a reusable TransactionStackGroup which holds tx components and allows modal header and button text to be defined and handles validation for all child components. 3. Add an isValid property to all tx comps for pristine validation state. 4. Reset all components in modal once modal is closed. This consists of a `resetInternal` function that each component should implement to reinstate its original starting state, and a `reset` function that parent components can use to reinstate the overridden properties. 5. Tx error handling to display either a StatusGo error message in the dialog, or wrong password in the TransactionSigner. 6. Fix ReceiveModal to allow for pre-selected account based on current wallet account. 7. Add focused border colour to Input component. 8. Fix issue with last TransactionStackGroup input not being able to obtain focus. 9. Fix fiatBalance not appearing on initial load on AccountSelector. 10. Fix selected asset updated properly when assets changed in the AssetSelector component. 11. AccountSelector is pre-populated with selected wallet account. Supporting work on the components has been done to suppor this. 12. Changing accounts in the "from account" updates the asset balances in the AssetAndAmountInput component. 13. Move validation from ContactSelector to the Select component. 1. Test sending of tokens. This requires that tokens contracts are setup on testnet. Right now, they are set up for contract addresses on mainnet. 2. Loading state once transaction is sent. Button in modal needs to move to a loading state and the "toast" messages in the wallet need to appear informaing user of tx progress. 3. Need to clarify (and implement?) support of ENS names in the AddressInput. It appears that ENS names could be resolved. This would be a long operation and require some kind of UI loading indication. 4. Wallet balances need to be updated on every block, so for example, sending funds between accounts I should be able to see the balance updated in real time. 1. Sending to a contact currently doesn't work because the ContactSelector component selects the Contact's whipser key, instead of his/her wallet address. May need to figure out how this is done in status-react. As it stands, attempting to send to a contact will crash the app. 2. Sending *from* an imported account does not work, with an error from StatusGo `cannot locate account for address: 0x123...`
2020-08-20 04:45:29 +00:00
shared/FormGroup.qml \
shared/IconButton.qml \
2020-05-29 17:42:25 +00:00
shared/Input.qml \
shared/LabelValueRow.qml \
2020-05-29 16:27:50 +00:00
shared/ModalPopup.qml \
shared/NotificationWindow.qml \
shared/PopupMenu.qml \
shared/Identicon.qml \
shared/AssetAndAmountInput.qml \
shared/CopyToClipBoardButton.qml \
shared/GasSelector.qml \
shared/GasValidator.qml \
shared/RoundedImage.qml \
shared/SearchBox.qml \
shared/Select.qml \
shared/Separator.qml \
feat(tx-comps): Send transaction modal Fixes #669. Composes all tx components to create a send transaction modal for the wallet. 1. Add a reusable TransactionStackView component that wraps a StackView component to show the screens of the Send Tx modal and handles back/forward/reset functionality. 2. Add a reusable TransactionStackGroup which holds tx components and allows modal header and button text to be defined and handles validation for all child components. 3. Add an isValid property to all tx comps for pristine validation state. 4. Reset all components in modal once modal is closed. This consists of a `resetInternal` function that each component should implement to reinstate its original starting state, and a `reset` function that parent components can use to reinstate the overridden properties. 5. Tx error handling to display either a StatusGo error message in the dialog, or wrong password in the TransactionSigner. 6. Fix ReceiveModal to allow for pre-selected account based on current wallet account. 7. Add focused border colour to Input component. 8. Fix issue with last TransactionStackGroup input not being able to obtain focus. 9. Fix fiatBalance not appearing on initial load on AccountSelector. 10. Fix selected asset updated properly when assets changed in the AssetSelector component. 11. AccountSelector is pre-populated with selected wallet account. Supporting work on the components has been done to suppor this. 12. Changing accounts in the "from account" updates the asset balances in the AssetAndAmountInput component. 13. Move validation from ContactSelector to the Select component. 1. Test sending of tokens. This requires that tokens contracts are setup on testnet. Right now, they are set up for contract addresses on mainnet. 2. Loading state once transaction is sent. Button in modal needs to move to a loading state and the "toast" messages in the wallet need to appear informaing user of tx progress. 3. Need to clarify (and implement?) support of ENS names in the AddressInput. It appears that ENS names could be resolved. This would be a long operation and require some kind of UI loading indication. 4. Wallet balances need to be updated on every block, so for example, sending funds between accounts I should be able to see the balance updated in real time. 1. Sending to a contact currently doesn't work because the ContactSelector component selects the Contact's whipser key, instead of his/her wallet address. May need to figure out how this is done in status-react. As it stands, attempting to send to a contact will crash the app. 2. Sending *from* an imported account does not work, with an error from StatusGo `cannot locate account for address: 0x123...`
2020-08-20 04:45:29 +00:00
shared/SeparatorWithIcon.qml \
shared/SplitViewHandle.qml \
shared/StatusTabButton.qml \
shared/StyledButton.qml \
2020-05-13 19:41:16 +00:00
shared/RoundedIcon.qml \
shared/StyledText.qml \
shared/StyledTextArea.qml \
shared/StyledTextEdit.qml \
shared/StyledTextField.qml \
2020-07-22 20:46:28 +00:00
shared/SVGImage.qml \
shared/TextWithLabel.qml \
shared/ToastMessage.qml \
shared/TransactionPreview.qml \
feat(tx-comps): Send transaction modal Fixes #669. Composes all tx components to create a send transaction modal for the wallet. 1. Add a reusable TransactionStackView component that wraps a StackView component to show the screens of the Send Tx modal and handles back/forward/reset functionality. 2. Add a reusable TransactionStackGroup which holds tx components and allows modal header and button text to be defined and handles validation for all child components. 3. Add an isValid property to all tx comps for pristine validation state. 4. Reset all components in modal once modal is closed. This consists of a `resetInternal` function that each component should implement to reinstate its original starting state, and a `reset` function that parent components can use to reinstate the overridden properties. 5. Tx error handling to display either a StatusGo error message in the dialog, or wrong password in the TransactionSigner. 6. Fix ReceiveModal to allow for pre-selected account based on current wallet account. 7. Add focused border colour to Input component. 8. Fix issue with last TransactionStackGroup input not being able to obtain focus. 9. Fix fiatBalance not appearing on initial load on AccountSelector. 10. Fix selected asset updated properly when assets changed in the AssetSelector component. 11. AccountSelector is pre-populated with selected wallet account. Supporting work on the components has been done to suppor this. 12. Changing accounts in the "from account" updates the asset balances in the AssetAndAmountInput component. 13. Move validation from ContactSelector to the Select component. 1. Test sending of tokens. This requires that tokens contracts are setup on testnet. Right now, they are set up for contract addresses on mainnet. 2. Loading state once transaction is sent. Button in modal needs to move to a loading state and the "toast" messages in the wallet need to appear informaing user of tx progress. 3. Need to clarify (and implement?) support of ENS names in the AddressInput. It appears that ENS names could be resolved. This would be a long operation and require some kind of UI loading indication. 4. Wallet balances need to be updated on every block, so for example, sending funds between accounts I should be able to see the balance updated in real time. 1. Sending to a contact currently doesn't work because the ContactSelector component selects the Contact's whipser key, instead of his/her wallet address. May need to figure out how this is done in status-react. As it stands, attempting to send to a contact will crash the app. 2. Sending *from* an imported account does not work, with an error from StatusGo `cannot locate account for address: 0x123...`
2020-08-20 04:45:29 +00:00
shared/TransactionFormGroup.qml \
shared/TransactionStackView.qml \
shared/img/check.svg \
chore: refactor Linux and macOS build/packaging steps Replaces PR #105. Implement a `pkg-macos` target that ultimately results in `Status.dmg` being written to `pkg/`. Due to [limitations][limits] of the OpenSSL `.dylib`s in `/usr/lib/` on macOS, `libssl.a` and `libcrypto.a` are statically linked into `bin/nim_status_client` from a [Homebrew][brew] "bottle" that is compatible with macOS 10.13 (the oldest macOS version compatible with Qt v5.14). `pkg-macos` creates an `.app` bundle layout in `tmp/macos/dist` based partly on information in a very helpful [StackOverflow answer][so-answer]. Note the part of the answer (toward the end) that explains a problem with the working directory and how to fix it. That's the reason for the `nim_status_client.sh` script introduced in this commit (it gets copied into the bundle). It's also the reason for having `Info.plist` copied into the bundle before `macdeployqt` is run (see below) and then overwriting it with `Info.runner.plist` before creating the `.dmg` file. The app icons file `status-icon.icns` was taken from `deployment/macos/` in the [status-react][sr] repo. The [`macdeployqt`][macdeployqt] tool is used to copy the needed portions of Qt into the bundle; it automatically updates `rpath`, etc. so the `nim_status_client` executable in the bundle can locate the libs within the bundle. `macdeployqt` is run twice, for the "outer" and "inner" `.app` bundles, because of an apparent bug in `macdeployqt` that results in QtWebEngine related resources not being processed correctly on the first pass. This results in some bloat in the final bundle but it seems unavoidable at present. The [create-dmg][cdmg] tool is used to package the bundle into a `.dmg` file. There are two reasons for this: 1. It produces a nice looking icon for the `.dmg` that overlays the Status logo on an external disk icon. 2. `Info.plist` needs to be overwritten after running `macdeployqt` (see explanation above) but before creating the `.dmg` file. If we passed the `-dmg` cli option to `macdeployqt` to have it generate the `.dmg` file then it wouldn't be possible to overwrite `Info.plist`. So there is a cosmetic reason and a practical reason for using another tool. Probably the biggest downside is that `create-dmg` is implemented in Node.js so it needs to be installed with `npm`; that's the reason this commit introduces `package.json`, etc. Note that zero code from `node_modules` ends up in the `.app` bundle or the `.dmg` file. Code signing of the macOS `.app` bundle and `.dmg` is attempted if the environment variable `MACOS_CODESIGN_IDENT` is defined. In that case, the environment variable `MACOS_KEYCHAIN_OPT` may optionally be defined with the path to a preferred keychain database file. Refactor a number of sections in the Makefile for consistency's sake, e.g. the `appimage` target becomes `pkg-linux` and ultimately results in `NimStatusClient-x86_64.AppImage` being written to `pkg/`. Make a number of changes to bring the Linux packaging steps up-to-date and use the `-qmlimport` cli option of `linuxdeployqt` to simplify resolution of Qt plugins. Note that `make pkg` will correctly resolve to `make pkg-linux` or `make pkg-macos` depending on the OS in use. Consistently use lower-case "c" in the name of *components* directories and imports. [limits]: https://developer.apple.com/forums/thread/124782 [brew]: https://brew.sh/ [so-answer]: https://stackoverflow.com/a/3251285 [sr]: https://github.com/status-im/status-react/tree/develop/deployment/macos [macdeployqt]: https://doc.qt.io/qt-5/macos-deployment.html [cdmg]: https://github.com/sindresorhus/create-dmg
2020-06-04 20:56:44 +00:00
shared/img/close.svg \
shared/img/loading.png \
shared/img/loading.svg \
chore: refactor Linux and macOS build/packaging steps Replaces PR #105. Implement a `pkg-macos` target that ultimately results in `Status.dmg` being written to `pkg/`. Due to [limitations][limits] of the OpenSSL `.dylib`s in `/usr/lib/` on macOS, `libssl.a` and `libcrypto.a` are statically linked into `bin/nim_status_client` from a [Homebrew][brew] "bottle" that is compatible with macOS 10.13 (the oldest macOS version compatible with Qt v5.14). `pkg-macos` creates an `.app` bundle layout in `tmp/macos/dist` based partly on information in a very helpful [StackOverflow answer][so-answer]. Note the part of the answer (toward the end) that explains a problem with the working directory and how to fix it. That's the reason for the `nim_status_client.sh` script introduced in this commit (it gets copied into the bundle). It's also the reason for having `Info.plist` copied into the bundle before `macdeployqt` is run (see below) and then overwriting it with `Info.runner.plist` before creating the `.dmg` file. The app icons file `status-icon.icns` was taken from `deployment/macos/` in the [status-react][sr] repo. The [`macdeployqt`][macdeployqt] tool is used to copy the needed portions of Qt into the bundle; it automatically updates `rpath`, etc. so the `nim_status_client` executable in the bundle can locate the libs within the bundle. `macdeployqt` is run twice, for the "outer" and "inner" `.app` bundles, because of an apparent bug in `macdeployqt` that results in QtWebEngine related resources not being processed correctly on the first pass. This results in some bloat in the final bundle but it seems unavoidable at present. The [create-dmg][cdmg] tool is used to package the bundle into a `.dmg` file. There are two reasons for this: 1. It produces a nice looking icon for the `.dmg` that overlays the Status logo on an external disk icon. 2. `Info.plist` needs to be overwritten after running `macdeployqt` (see explanation above) but before creating the `.dmg` file. If we passed the `-dmg` cli option to `macdeployqt` to have it generate the `.dmg` file then it wouldn't be possible to overwrite `Info.plist`. So there is a cosmetic reason and a practical reason for using another tool. Probably the biggest downside is that `create-dmg` is implemented in Node.js so it needs to be installed with `npm`; that's the reason this commit introduces `package.json`, etc. Note that zero code from `node_modules` ends up in the `.app` bundle or the `.dmg` file. Code signing of the macOS `.app` bundle and `.dmg` is attempted if the environment variable `MACOS_CODESIGN_IDENT` is defined. In that case, the environment variable `MACOS_KEYCHAIN_OPT` may optionally be defined with the path to a preferred keychain database file. Refactor a number of sections in the Makefile for consistency's sake, e.g. the `appimage` target becomes `pkg-linux` and ultimately results in `NimStatusClient-x86_64.AppImage` being written to `pkg/`. Make a number of changes to bring the Linux packaging steps up-to-date and use the `-qmlimport` cli option of `linuxdeployqt` to simplify resolution of Qt plugins. Note that `make pkg` will correctly resolve to `make pkg-linux` or `make pkg-macos` depending on the OS in use. Consistently use lower-case "c" in the name of *components* directories and imports. [limits]: https://developer.apple.com/forums/thread/124782 [brew]: https://brew.sh/ [so-answer]: https://stackoverflow.com/a/3251285 [sr]: https://github.com/status-im/status-react/tree/develop/deployment/macos [macdeployqt]: https://doc.qt.io/qt-5/macos-deployment.html [cdmg]: https://github.com/sindresorhus/create-dmg
2020-06-04 20:56:44 +00:00
shared/img/status-logo.png \
shared/qmldir \
sounds/ErrorSound.qml