Adds settings API for getting current network details.
Uses the current network details to display the correct etherscan link in QML (etherscan URL is a setting in the current network settings).
Implement a `pkg-windows` target that ultimately results in `Status.zip` being
written to `pkg/`.
Note: this commit does not introduce code signing for the Windows build since
that piece is still a work in progress.
`pkg-windows` creates a portable folder in `tmp/windows/dist` with the help of
[`windeployqt`][windeployqt], which copies the needed portions of Qt into the
folder.
Since DLL resolution is relatively inflexible, a launcher `Status.exe` is
created at the top-level of the folder; the launcher opens `bin/Status.exe`
while adding the portable folder's `bin/` to the `PATH`, allowing
`bin/Status.exe` to resolve the DLLs in that folder.
A few additional tools need to be installed (e.g. with [scoop][scoop]) and
availble in `PATH`:
* 7-zip
* dos2unix (provides unix2dos)
* findutils
* go
* rcedit
* wget
The above list builds on the tools list in PR #521, and the other requirements
and instructions in that PR's description still apply.
**Why not build an installer?**
When starting work on packaging for the Windows build, my initial plan was to
build an installer, and for that purpose I researched the [WiX Toolset][wix],
the [Qt Installer Framework][qtif], and some other options.
I found that building an installer is a bit complex. I then recalled, from
personal experience, that [Cmder][cmder]'s [Mini download][mini] is
installer-less. You simply unzip the download and place the `cmder_mini` folder
wherever you prefer. Such an approach was also recommended to me in one of the
Nim language's community chats.
In addition to being simpler, the installer-less approach also gives
installation of Status Desktop a lower profile than an installer-application
would since nothing is written to the Windows registry, added to the *Add or
remove programs* list, etc. I think that's a benefit given the privacy-security
focus of Status, but others may feel differently so please provide feedback on
this point!
[windeployqt]: https://doc.qt.io/qt-5/windows-deployment.html
[scoop]: https://scoop.sh/
[wix]: https://wixtoolset.org/
[qtif]: https://doc.qt.io/qtinstallerframework/index.html
[cmder]: https://cmder.net/
[mini]: https://github.com/cmderdev/cmder/releases/download/v1.3.15/cmder_mini.zip
Allow switching to Ropsten by flipping a toggle switch in Profile > Advanced settings.
When switching networks, note that installed stickers will be uninstalled, and recent stickers will be removed. Sticker packs can be reinstalled after login. Purchased sticker packs will not need to be re-purchased, but will need to be re-installed.
Mailserver fleet information will **not** be updated. This can be controlled by a separate (undeveloped yet) setting.
Sticker pack details retreived from contract:
- pack data decoded from contract response
- data contains contentHash which, once decoded, contains an IPFS identifier
- futher pack data in EDN format is downloaded from IPFS
- the EDN info is decoded in to a StickerPack
List of available packs from contract are obtained separately from list of installed contracts (stored as a setting in Status-go).
Sticker market contains dynamic list of sticker packs. The sticker button shown for each pack has all states defined (in the design) for all UI states (ie bought, free, installed, pending, etc)
Add modal popup showing sticker pack details and list of stickers to be un/installed. Contains a "larger" version of the sticker pack button with many differnt UI states defined.
Uninstallation of a sticker pack removes those sticker pack's stickers from the recent sticker list and persists the list
Simplify the view model by including stickers, instead of setting an "activeStickerPackId" property. This allowed for display of sticker pack stickers to be displayed in the modal popup separately from the sticker packs shown in the market.
If the environment variable `NIM_STATUS_CLIENT_DEV` is not empty then the
`./data` dir is created/used relative to the current working directory, as was
always the case prior to the changes introduced in this commit.
`NIM_STATUS_CLIENT_DEV` is set to `t` when doing `make run`. To get the
production behavior in development do:
```
$ NIM_STATUS_CLIENT_DEV="" make run
```
or on Windows in a Bash shell:
```
$ NIM_STATUS_CLIENT_DEV="" mingw32-make run
```
Closes#391
Add sticker popup
Add send sticker message
Add ability to select sticker pack and show stickers for pack with scroll
1. Sticker history
2. Install sticker packs
3. Sticker market
1. Sticker packs are installed on app start up until installation of sticker pack functionality is added
2. Optimisations such as preloading images to be done so that sticker images are not downloaded each time.
There's still some things that needs to be done (possibly in future commits):
[ ] Asset icons need to be determined so they can be displayed along the transaction
[ ] Transaction values need to be converted to decimal values
[ ] Date-time formatting
[ ] Grouping of transactions by days
display real contacts on profile
query contacts
add contact in form
fixes
fixes
display contacts
cleanup
cleanup
remove echo
refactor to use profile instead of contact model
Move the onboarding/login state machine to the top level in main.qml, so that logout events can trigger new states.
Add Loader to statemachine so that each component is lazy-loaded. Initial tests saved 50MB of memory on startup.
Currently, logging out, then logging back in to the same or different account results in a doubling-up of chats/messages/wallet accounts. These need to be reset, however I need help doing that and it would delayed and blown out this PR further. This reset has been done for Onboarding and Login, but needs to be done for chats, wallet, mailservers, etc.
Decode multihash content identifier (CID) using `libp2p` libraries. Makes some assumptions that we only handle `ipfs-ns` codec hashes and that the sticker hash starts with `e3xxxxyy`, where xxxx is essentially ignore and yy indicates the cid codec.
- unify the "build-..." targets
- enable a debug build by default, to simplify development
- bump vendor/DOtherSide
- avoid DOtherSide checks for docs/tests-specific tools like Doxygen
- switch to an in-place build for DOtherSide
- silence the DOtherSide build when V=0, make it more verbose with V=1
- don't delete checked out submodules in the "clean" target
- update build instructions in the README
- centralise Nim compiler options in a top-level "config.nims" (except
`-d:debug` which needs to be on the command line)
update total fiat balance so it can auto update
update account list when needed
force update of asset list
add account in the model
add 0x0 address instead of invalid one
ensure asset list is updated
- unify the "build-..." targets
- enable a debug build by default, to simplify development
- bump vendor/DOtherSide
- avoid DOtherSide checks for docs/tests-specific tools like Doxygen
- switch to an in-place build for DOtherSide
- silence the DOtherSide build when V=0, make it more verbose with V=1
- don't delete checked out submodules in the "clean" target
- update build instructions in the README
- centralise Nim compiler options in a top-level "config.nims" (except
`-d:debug` which needs to be on the command line)
- fix: Change displayed login key to whisper public key (starts with 0x04)
- fix: remove key displayed on login accounts as this value is not passed to use from status-go's openAccounts
- feat: add selected account view when entering password for login and generating an account (same UI as importing a key)