refactor: wallet: connect current account
refactor(@wallet): load collection and connect to store
refactor(@wallet): add boilerplate for accounts creation/generation
refactor(@wallet): watch account
refactor(@wallet): Add account generation
refactor(@wallet): display all accounts
refactor(@wallet): switch account
refactor(@desktop): update current currency
refactor(@desktop/wallet): token action
refactor(@desktop/wallet): Add update account
refactor(@desktop/wallet): filter chat account from wallet
refactor(@desktop/wallet): Update currency attribute
refactor(@desktop/wallet): Fix display of various balances
refactor(@dekstop/wallet): handle current account changed
refactor(@wallet/desktop): add notify event on main section
refactor(@desktop/wallet): Push events from service
refactor(@desktop/wallet): handle all tokens event
refactor(@desktop/wallet): refresh accounts on event
refactor(@wallet/desktop): formatting of currency balances
refactor(@desktop/wallet): load collectible
refactor: refactor wallet transaction history to the new architecture
update status-lib
refactor: add back events for the transaction history
refactor: support multiple accounts in the transaction history
Since we have `accountSettings` and `globalSettings` available on both sides Nim
and qml, we don't need `src/app_service/service/local_settings/service` any more.
Indeed it has never been a service logically, but we made it as service according to
the old code base.
Accessing any of local setting instances is easy doable from any part of the app just
using `singletonInstance` and appropriate settings from it.
add profile module
add boilerplate for profile section
add profile module
add profile module
fix variant
use accounts service
get identityimage to work
cleanup
add other contacts services
add contacts service
make contact section compile with refactor
fix controller and service interfaces
add about section
cause it logically doesn't belong there as it is not a service. It is a global
instance, exposed to the UI (qml) part. Since it represents QSettings it should
be maintained from the single point.
Parent modules are exposed to submodules using their base class instead of
concepts, since using concepts is not possible to create a second level nested
modules.
Initial structure for MainModule containing ChatSectionModule and
CommunitySectionModule is added, as well as initial structure for
StartupModule containing OnboardingModule and LoginModule.
Order of execution is updated and adapted to the current app state.
Main module gets loaded once a user is successfully logged in.
Once refactoring with module this should probably be attached to main
or to something common to all module since it is accessed in low level part
of the app accross multiple section
Turns out we've been accidentally resetting the channel's `position`
property to `0` by not sending it over to status-lib's underlying
`editCommunityChat` API.
This fixes it by using a newer version of status-lib which supports
the `position` paramter in `editCommunityChat` and then sending that
value along from the edit channel popup.
Fixes#3672
Avoid to reveal which alias own which settings. The only settings
pre-login available is the storeToKeychain
Ideally we should also encrypt the profile settings
Since #e0c53b7012354023e367c33093598f7523063aa6 settings where loaded
according to the username while they should be loaded after the public
key
As the public key is only available once the login happened, it needs
to be set when the profile is being initialized
Introduced Style.svg() Style.png() Style.emoji() and
Style.icon() in Style.qml. Those should be used to
set the source in Images instead of using relative
paths. Usage:
Image {
source: Style.svg("check)
....
Also moved all Singletons inside a new "utils"
folder and made it a QML module, to use
import utils 1.0 instead of relative paths
Closes#3678
- Display loading indicator on login when mailserver messages are requested
- Fix bug where the mailserver that's selected as soon as you login is disconnected while being still in the process of connecting instead of waiting until 10s have passed to try connecting to a different mailserver
- Use status-go version that fixes an issue fetching mailserver messages when more than 999 messages are being verified if they're in the cache
fixes#3659
Wallet2 needs its own event otherwise they wallet1/2 mixes
and as not everything is implemented in wallet2, it crashes
In this particular case, the account is added into wallet1 but trigger
an event intercepted by wallet2, wallet2 doesn't have the new account
and crash
Fixes: #3473.
Sometimes when blocking users and changes channels, blocked user messages would still appear.
This PR fixes the issue by toggling a `hide` property on messages from a contact when that contact is blocked or unblocked. Previously, the messages were only removed from the view when the contact was blocked, but when the view was reloaded, that state was not tracked correctly.
In case clicked channel:
- exists in a community -> the app will switch you to it
- doesn't exist in a community, but exists in the public chat list -> the app
will switch to `Chat` section and also to the appropriate channel there
- doesn't exist in a community and doesn't exist in the public chat list -> the app
will switch to `Chat` section and join new channel
Fixes: #3489
There were two issues why mentions didn't work in communities:
1. The function that replaces mentions with pubkey looked in the wrong place
2. The same function always prepented `userName` with `@` which isn't always necessary
This commit fix this by ensuring the replacement function looks in the community memberlist
instead of a messageList and also by checking if a `userName` already starts with a `@`
and only prepends it if not.
Fixes#3492
Closes#3307.
WalletV2 view can be toggled between normal wallet view and the SavedAddresses view.
Users can load, add, edit, and delete saved addresses.
Favouriting a saved address is out of scope, as is sending to a saved addresses, drilling down in to a saved address, and supporting multiple networks.
Updates components that utilised the StatusMinLengthValidator component to support the changes made to StatusQ.
### Notes
1. Depends on status-go PR https://github.com/status-im/status-go/pull/2356
2. Depends on StatusQ PR https://github.com/status-im/StatusQ/pull/394.
# Conflicts:
# src/app/wallet/v2/view.nim
# ui/app/AppLayouts/WalletV2/WalletV2Layout.qml
This feature works for MacOs only, for now.
On login, whether new or already created user may select between options:
"Store" - store password to the Keychain
"Not now" - don't store it now, but ask next time again
"Never" - don't store them ever and don't ask again
Selected preference may be changed later in:
`ProfileSettings > Privacy and security > Store pass to Keychain`
On the next app run, if `Store` was selected, a user will be asked to confirm
his identity using Touch Id in order to log in the app. If any error happens
he will be able to login using password.
Fixes: #2675
From now on we are able to access local settings (settings and global settings)
on the nim side, not only through the qml.
This change is required as part of the feature issue-2675.
Since `src/status` was Qt dependant part because of the following foundation files:
- /src/status/tasks/marathon/mailserver/controller.nim
- /src/status/signals/core.nim
- /src/status/tasks/marathon/mailserver/events.nim
- /src/status/tasks/qt.nim
and because logic related classes like:
- /src/status/chat.nim
this commit made that part Qt independant.
New layer `src/app_service` is introduced and above mentioned foundation files
are moved there. As well as corresponding logic for requested services.
Communication between logical parts on the high level is as follows:
- `src/app` => `src/app_service` => `src/status` => `src/app`
- `src/app` => `src/status` => `src/app`
Fixes: #3376
As we keep a local list of contact request and contact added
we should not need to query this data each time we switch chat as
we already have this data in memory.
This data should be maintained each time there is a change
fixes#1642
Also: Remove what seems to be duplicated and dead code about
getContactById
Removed all computation of suggestion from qml
Reuse user list in order to populate the suggestion box
As a side effect, the suggestion are not serialized from qml to
nim
Remove InputArea which seems not used anymore
App is responsive to the OS theme change event.
Now we're following system set theme when the app is started.
Corresponding part on the side on nimqml is added.
Corresponding part on the side on dotherside is added.
On the side of dother side we had kind of a memory leak, cause objects added to
the filter were not deleted ever. When the app is closing, it just removes
filters, but doesn't delete them.
I faced a logical issue, that we were sending qmlengine pointer to the
installEventFilter method, instead object which may or may not rely on the
qqmlengine instance, that is fixed also.
Fixes: #1725
Counting mentions for community seems was not developed yet. That's added here in this commit, but
instead of using "mentionsCount" we introduced on the side of nim, I found that we're receiving
"unviewedMentionsCount", but only for new messages. I used it for this fix.
Counting mentions and requests per community added.
Fixes: #2972
A crash leaving chat is fixed.
The issue was very hidden cause everything looks ok, at first glance, but not, the thing is that
"messages" exposed to qml were deleted from ChatsView and signals beginRemoveRows and
endRemoveRows were emitted for CatsView abstract list model instead for MessageView abstract list
model. That results in an app crash in some moments (not always reproducible, but often).
Fixes: #3005
Feature added. Firstly we check if the searched message is already displayed and if yes simply jump
to it, if not then we are loading new 20 messages in the past using cursor and check if the
searched message's id is among those received messages. We do that in a loop till we find the
message we are searching for.
Fixes: #3005
Changes made here were necessary in order to have good base to requested develop feature.
- duplicated methods are removed
- loading messages either on start (initial loading) or loading more messages requested by
scrolling in the chat view is now done in separate thread (asynchronous) instead as it was earlier,
done in the main thread
- new file is added for storing async tasks for chat part only
- ChatModel (from status/chat.nim) is QObject instance now, so it may handle async job in a slot
- a job requested from the view is done in separate thread and view is notified about the changes
using signal/slot mechanism
This is not refactoring, but minimal update to have clear situation for further changes
Fixes: #3005
Searching messages by some term for a specific channel is added on the side of status-go and an
appropriate part on the side of nim is developed accordingly.
Fixes: #2912
Current code adapted to handle future changes on message search (like searching message in multiple
channels).
Memory leak which was happening in qml assigning (copying) MessageItem to qml variable messageItem
(where that qml variable messageItem was never deleted) is fixed.
Fixes: #2912
Searching messages by some term for a specific channel is added on the side of status-go and an
appropriate part on the side of nim is developed accordingly.
Fixes: #2912
Current code adapted to handle future changes on message search (like searching message in multiple
channels).
Memory leak which was happening in qml assigning (copying) MessageItem to qml variable messageItem
(where that qml variable messageItem was never deleted) is fixed.
Fixes: #2912
fixes#2826
When fetching communities, the chat attached to it are not complete.
In this commit, we ensure that everytime we fetch a community, we update
its chat with the chat being loaded which contains all the data we need
to properly display a chat
As described in #3015, when editing channels that belong to a category of a community,
after saving them, they'll get kicked out of the category.
This is because we haven't passed the category id along the API that performs the
save operation.
This commit ensures we have access to a category chats' `categoryId` and send it
over to `editCommunityChat` RPC API provided by status-go
Fixes#3015