Commit Graph

185 Commits

Author SHA1 Message Date
emizzle 3dac87df3d feat/tx-comps: Add TransactionPreview component
Adds a TransactionPreview component as per the spec https://www.notion.so/emizzle/Wallet-transaction-components-2003b78a8d0d41c4ab3d21eb2496fb20

- update ReceiveModal dropdown to match design
- long alias and account name support
- long name support in account selector
- strip all trailing zeros from displayed balances
2020-08-19 14:38:45 -04:00
Michael Bradley, Jr c08767c74b build: remove dapp browser 2020-08-17 14:01:26 -04:00
Jonathan Rainville 79cf818202 feat: add receive modal
Add receive modal in the wallet to show a QR code and address selector
Improve Input component to be able to show a Copy button that copies to clipboard
Improve AccountSelector modal to be able to not show details and fix eliding
2020-08-17 12:07:11 +02:00
Jonathan Rainville 3cb88d0cfa
feat: add profile section to the context menu 2020-08-05 12:14:46 +02:00
emizzle 9374be5857
feat: Send transaction component -- Account selector
Fixes #670.

Component spec based on https://www.notion.so/emizzle/Wallet-transaction-components-2003b78a8d0d41c4ab3d21eb2496fb20.

Changes the current Select shared component to a model databound component. This means we can bind directly to `QAbstractListModel`'s coming from Nim instead of needing manipulating the data in to javascript objects. The changes to the Select component will be used for the upcoming Asset selector shared component.
2020-08-05 16:38:49 +10:00
Jonathan Rainville 549f1ff7f2
feat: categorize emojis in the menu and add category buttons
Signed-off-by: Jonathan Rainville <rainville.jonathan@gmail.com>
2020-07-30 10:04:08 -04:00
Pascal Precht e18188514a feat(profile): implement contact management
This introduces the ability to:

- list search existing contacts
- block contacts
- unblock contacts
- list blocked contacts
- remove contacts
- search and add contacts

Closes #608
2020-07-24 09:37:32 -04:00
Jonathan Rainville 9654f937f2 fix: fix all remaining QML warnings 2020-07-23 15:59:18 -04:00
Jonathan Rainville a1585c8499 feat: add ImageLoader to reuse Image loading mechanism 2020-07-23 15:44:59 -04:00
Jonathan Rainville e176443ceb fix: fix chat not scrolling to bottom on load 2020-07-23 15:44:59 -04:00
Jonathan Rainville 7f7a6cbc97 feat: make profile look like the design
Improve left tab menu
Move settings to right panel instead of advanced
Create MyProfile container
Improve Contacts and Security
2020-07-22 10:17:54 -04:00
Jonathan Rainville 911aac92de feat: add onClicked to Emojis and use a Model to show them 2020-07-21 11:41:19 -04:00
Jonathan Rainville 489ad7052f feat: add changeTranslation function 2020-07-21 11:09:00 -04:00
Jonathan Rainville ad8c1e455c chore: add translations for all languages 2020-07-17 11:55:01 -04:00
Jonathan Rainville 0ab257d005 feat: make RectangleCorner a component and show images in compact 2020-07-16 11:49:13 -04:00
Jonathan Rainville 66467ff070 fix: wallet ui errors
Fixes # 472
2020-07-16 11:43:42 -04:00
Jonathan Rainville 5951fcf131 feat: refactor Message and add Compact message type 2020-07-16 10:29:29 -04:00
emizzle ac7deb3af0 feat: Un/install free sticker packs in sticker market
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.
2020-07-15 15:53:48 -04:00
Iuri Matias 7d7bac5fb6 add notifications support
first attempt

attempt 2

working notifications

add notification sound

cleanup

remove unneeded imports

remove unneded imports
2020-07-14 14:23:40 -04:00
Jonathan Rainville b3b7047fe1 feat: add invite friends modal 2020-07-10 15:39:56 -04:00
Jonathan Rainville ff2ed712f2 feat: improve Copy button to copy directly and have an active state 2020-07-10 15:39:56 -04:00
Jonathan Rainville 284572898a feat: add view when clicking the X on the EmptyView 2020-07-10 15:39:56 -04:00
Jonathan Rainville 95d2e01a3f chore: add missing file in the sources of pro and add translations 2020-07-10 15:39:56 -04:00
Jonathan Rainville 9c637fdd43 feat: show literal text instead of ids + script fixes 2020-07-08 12:37:41 -04:00
Richard Ramos a4b9eedd5e feat: set device name 2020-07-06 14:17:19 -04:00
Jonathan Rainville 4371e37b27 feat: show the all the emojis in the popup 2020-07-06 13:59:47 -04:00
Jonathan Rainville 881f6dbe80 feat: enable changing theme from the profile settings 2020-07-03 09:59:14 -04:00
Jonathan Rainville a529d729ea feat: change Theme to Style to enable changing Theme 2020-07-03 09:59:14 -04:00
Iuri Matias 9935d349c4 play sounds when a message is sent or an error occurs 2020-07-02 10:31:10 -04:00
Richard Ramos bbd51cdcfe Use twemoji.js 2020-06-30 14:35:14 -04:00
Jonathan Rainville 02d915cb50 chore: up import version and fix SplitViews 2020-06-25 11:02:35 -04:00
emizzle 847eb2623f feat: add sticker popup
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.
2020-06-25 10:27:26 -04:00
Jonathan Rainville ad2a318c85 feat: add validationError prop on Input and use it in privateChatPopup 2020-06-23 07:09:18 -04:00
Michael Bradley, Jr ce7e6b8d51 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-22 10:53:57 -05:00
Jonathan Rainville 7e96a17f3b fix: add StyledTextEdit and TextField to use the font 2020-06-19 14:53:45 -04:00
Jonathan Rainville 8755c901de fix: fix font loading issue and create a text component to use that font 2020-06-19 14:53:45 -04:00
Jonathan Rainville f2a573bf53 add translation files to the pro file 2020-06-19 14:36:14 -04:00
Jonathan Rainville 5dacb89822 feat: add base for translations 2020-06-19 14:36:14 -04:00
Richard Ramos 4fef70fc4a feat: Create group chats 2020-06-18 10:16:32 -04:00
Iuri Matias e802159a6a display real contacts on profile
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
2020-06-16 12:48:25 -04:00
Richard Ramos b0a8bc3368 fix: make text selectable, limit text input content width and execute actions onEnter 2020-06-16 12:05:22 -04:00
Richard Ramos b842925ba4 feat: edit group name 2020-06-16 12:05:22 -04:00
Jonathan Rainville 34810e0587 chore: remove AccountSelection component that is no longer needed 2020-06-16 11:57:11 -04:00
Jonathan Rainville 7873a0ff58 feat: design gen new key modal 2020-06-15 08:07:15 -04:00
Jonathan Rainville 846dc646e1 feat: add design to enter a seed key 2020-06-13 09:51:38 -04:00
Jonathan Rainville 67c7e9b0ca feat: implement design on the login screen 2020-06-12 08:11:14 -04:00
Iuri Matias 36b2ae5a66 support adding a custom token
support adding a custom token

cleanup
2020-06-11 18:03:49 -04:00
Jonathan Rainville 193f1331d1 feat: add very placeholder account settings modal
fef
2020-06-11 11:23:01 -04:00
Jonathan Rainville 937dd89146 refactor: split Input into three files to simplify and reduce memory
Having all the different input types in one file made it simpler to design, but created an issue with memory, because all the aliases, properties and images were created for all types even if you only used a basic Input. I tried using Loaders, but making aliases within loaders is super painful/impossible in some cases.
2020-06-10 15:00:50 -04:00
Jonathan Rainville 7295fde809 feat: add watch only accounts to wallet 2020-06-09 18:10:57 -04:00
Jonathan Rainville 2ade9e938d feat: add modal to add an account with a private key 2020-06-09 18:10:57 -04:00
Jonathan Rainville 50c10d38dd feat: enable adding an account with a seed phrase 2020-06-08 17:01:29 -04:00
Jonathan Rainville bf5f0b6dda feat: add basic generate account popup 2020-06-04 16:31:17 -04:00
Iuri Matias df9a6d0f07 refactor & update currency modal to look and work like designs
update gitignore

display list of currencies
2020-06-04 14:29:04 -04:00
Iuri Matias 94bc4f02d7 add list of tokens and icons 2020-06-04 10:43:39 -04:00
Iuri Matias 64b565c6c3 extract Login wizard components 2020-06-04 10:39:28 -04:00
Iuri Matias 1ba579e94b extract the slide into a component 2020-06-04 10:39:28 -04:00
Iuri Matias f62d3aaca7 wallet settings modal; save default currency
wallet settings modal; save default currency

wallet settings modal; save default currency

save/load currency preference

fix default currency call

use chronicle instead of echo

fix issues
2020-06-03 10:38:50 -04:00
Jonathan Rainville 9e25ba1d95 fix: fix wallet missing file message and color warning 2020-06-01 13:54:49 -04:00
Jonathan Rainville c29160fff7 chore: use Buttons for all components and improve Login 2020-06-01 12:28:47 -04:00
Richard Ramos 1c00bb2dff Create a reusable modal popup 2020-05-29 15:02:31 -04:00
Jonathan Rainville 582d838ae7 feat: add reusable Input component 2020-05-29 14:44:45 -04:00
Jonathan Rainville 77966c8f6c feat: add very basic sendModal content 2020-05-29 14:44:45 -04:00
Jonathan Rainville b0f1bfc4fc chore: add missing files in .pro file 2020-05-28 14:05:41 -04:00
Jonathan Rainville 7d12ed2561 chore: change font to StatusInter 2020-05-28 14:01:34 -04:00
Jonathan Rainville 3ce1883c0b feat: add files for the wallet tabs 2020-05-28 13:59:56 -04:00
Jonathan Rainville d1b786811f feat: add TabButton and TabBar for the Wallet 2020-05-28 13:59:56 -04:00
Jonathan Rainville 47cc169c4f chore: split WalletHeader to another file 2020-05-28 13:59:56 -04:00
Iuri Matias 0ee32c2bb1 add default list to the chat messages 2020-05-28 13:49:53 -04:00
Richard Ramos 3b8408d21a Join private chats 2020-05-28 11:54:44 -04:00
Richard Ramos 1a829828c8 feat: private chat popup 2020-05-28 09:29:17 -04:00
Jonathan Rainville 056e640a29 feat: add wallet header 2020-05-27 17:43:36 -04:00
Iuri Matias 1503f2d1f8 divide left tab into 2 files 2020-05-27 17:30:53 -04:00
Richard Ramos aa5dbc6994 fix: moving components to correct shared folder 2020-05-27 17:30:44 -04:00
Iuri Matias f4439fcb6f default views for when there is no chat opened + chat links
default views for when there is no chat opened + chat links

add channel component

update other layouts

fix problem with alias

add test channels

fix merge conflict
2020-05-26 17:07:24 -04:00
Jonathan Rainville f89628871f refactor: split chatLayout in column files 2020-05-26 13:55:00 -04:00
emizzle dafd11fbc0 feat: onboarding generate new account
Generates 5 random accounts with identicons, allows user to enter password, then stores the account and logs in to the statusgo node.

Add EventEmitter that notifies nim_status_client.nim once node has started and is logged in (likely needs some refactoring to include the eventemitter in the base controller class).

Add QML StateMachine for the onboarding view.

Add nimcrytpo, uuids, eventemitter, isaac dependencies via submodules.

Add button to Intro view to randomly gen account.
2020-05-21 19:33:14 -04:00
Michael Bradley, Jr d673915975 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 20:02:21 -04:00
Iuri Matias bc6d1f1623 move views & logic into their respective folders; add initial tab for node management 2020-05-15 18:43:32 -04:00
Jonathan Rainville cd522ba803 feat: split left tab to its own file and move them to Wallet dir 2020-05-14 12:24:15 -04:00
Jonathan Rainville 63ce87d5e9 fix: fix missing images 2020-05-14 12:24:15 -04:00
Jonathan Rainville fe1a4db078 feat: add Wallet tab bar 2020-05-13 19:05:20 -04:00
Jonathan Rainville 067b6f6fb0 feat: add basic WalletLayout 2020-05-13 19:05:20 -04:00
Jonathan Rainville ae7ee0b363 chore: split ChatLayout into a seprate file
Preliminary work for the wallet. This way, AppLayout isn,t goign to be huge
2020-05-13 13:39:23 -04:00
emizzle 4769f578a6 feat: Onboarding carousel
Onboarding carousel completed

Redo folder restructuring

NOTES:
1. nim_status_client binary is output to `./bin/nim_status_client`, so you'll need to update your workflow to run this file. README has been updated to reflect this. Also, if you're running VSCode, instructions for code reload were added.
2. All `ui` files now live in `ui/`
3. All lib files (ie `libstatus`) now live in `lib/`
4. Removed the Qt Creater user project file as this is unique to each user
5. Moved the project file to `ui/`, so just open up the `ui` folder in Qt creator and it should locate the project file
6. `-d:release` removed from compilation as it wasn't needed
7. Broke up main.qml in to the main app and onboarding components, however this should be broken down further into more reusable components
8. Click "Get started" to show chat

Format some files using nimpretty
2020-05-12 18:52:51 -04:00