923 Commits

Author SHA1 Message Date
Richard Ramos
2873e65a61
feat: community tags (#2708)
Signed-off-by: Richard Ramos <info@richardramos.me>

Co-authored-by: MishkaRogachev <mishkarogachev@gmail.com>
2022-06-24 09:40:12 -04:00
Richard Ramos
31feea9f15
fix: missing display name when requesting to join a community (#2725) 2022-06-22 14:02:44 -04:00
Boris Melnik
8063152657
fix(community-edit): Save permissions when community edited (#2720)
Part of: https://github.com/status-im/status-desktop/issues/6073
2022-06-21 13:43:49 -04:00
flexsurfer
1c77f2ed6e
fix offline messages marked as seen (#2713) 2022-06-21 18:31:15 +02:00
Samuel Hawksby-Robinson
366c088ec5 Fix cycle import and added private key to Client 2022-06-20 15:33:09 +01:00
Andrea Maria Piana
22669d0423 Add default contact request
If a contact update or a legacy contact request is sent, we create a
notification for the user in the activity center so it can be replied
to.
If at a later date a new contact request is received from the same user,
this will replace it, so the proper message can be displayed.
2022-06-20 10:44:08 +01:00
Vitaliy Vlasov
4f722b6fe8 Communities encryption integration 2022-06-17 21:24:39 +03:00
Andrea Maria Piana
961526556b
Accept/Dismiss LastestContactRequestForContact endpoint (#2702) 2022-06-17 12:20:43 -04:00
Pascal Precht
c855272340 feat: add garbage collection for soft deleted bookmarks
This introduces a simple garbage collection which checks for all soft
deleted bookmarks (`removed = 1`) which have been marked for garbage
collection more than 30 days ago from the time of bootstapping the
messenger.

Closes #2705
2022-06-17 14:21:21 +02:00
Pascal Precht
f3af6aa4dc feat: introduce AddBookmark and RemoveBookmark APIs to messenger
These APIs are being introduced to address #2706 and #2704, provided
that clients will move to using these APIs instead of the currently
provided equivalent APIs in the browser service.

The `bookmarks` table is being extended with a `deleted_at` field which
can later be used for garbage collection, as "removing" a bookmark is
merely soft deletion and doesn't actually remove the data from the
database.

In addition to those APIs adding and soft deleting bookmark entries,
they also automatically perform a sync operation to ensure that
bookmarks are synced in real-time (#2704).

Closes #2706, #2704
2022-06-17 12:29:03 +02:00
Pascal Precht
9d5bcc3c60 feat: sync CommunitySettings across paired devices
This commit introduces a new `clock` field in the
`communities_settings` table so that it can be leveraged for syncing
community settings across devices.

It alsoe exends existing `syncCommunity` APIs to generate
`SyncCommunitySettings` as well, avoiding sending additional sync messages
for community settings.

When editing communities however, we still sync community settings
explicitly are we aren't syncing the community itself in that case.
2022-06-16 12:45:05 +02:00
Samuel Hawksby-Robinson
7f149f93c1
Get preferred network IP and refactor server package to increase reusability (#2626)
* Added function to get preffered network IP

Also done some refactor work oon server package to make a lot more reusable

* Added server.Option and simplified handler funcs

* Added serial number deterministically generated from pk

* Debugging TLS server connection

* Implemented configurable server ip

When accessing over the network the server needs to listen on the network port and not localhost or 127.0.0.1 . Also the cert can now have a dedicated IP

* Refactor of URL funcs to use the url package

* Removed redundant Options pattern in favour of config param

* Added full server test using GetOutboundIP

* Remove references and usage of Server.port

The application does not need to set the port, we rely on the net.Listener to pick a port.

* Version bump

* Added ToECDSA func and improved cert testing

* Added error check in test

* Split Server types, embedding raw Server funcs into specialised server types

* localhost

* Implemented DNS and IP based cert gen

ios doesn't allow for restricted ip addresses to be used in a valid tls cert

* Replace listener handling with original port store

Also added handlers as a parameter of the Server
2022-06-15 15:49:31 +01:00
Andrea Maria Piana
f9ac629b2a Enable contact request settings 2022-06-13 13:46:45 +01:00
Richard Ramos
9430f494be
fix: handle nil descriptions in communities for chat_getChats (#2694) 2022-06-08 08:46:52 -04:00
Andrea Maria Piana
09ba88c19d Join group on accepting activity center notification 2022-06-08 11:48:45 +01:00
Patryk Osmaczko
5df5d6b519 feat: remove explicit group chat join
relates: #status-im/status-desktop/5717
2022-06-08 11:48:45 +01:00
Andrea Maria Piana
d25c0fa1b8 Resize chat message images 2022-06-07 12:56:24 +01:00
Richard Ramos
c3b0582cc9
feat: fetch curated communities from smart contract on optimism (#2685) 2022-06-02 08:17:52 -04:00
Patryk Osmaczko
ee7025a573 feat: add intro/outro message to communities 2022-05-31 11:41:26 +02:00
flexsurfer
888dd0e3e7
improve MarkAllRead performance (#2698) 2022-05-31 10:18:48 +02:00
Andrea Maria Piana
1bfde4c4cc Initial support for mutual contact requests 2022-05-31 09:12:36 +01:00
Stefan
63e58ba035 feat: add banner support for communities
Add banner image as a special `IdentityImage` beside "thumbnail" and "large"

Banner input cropped image processing

- Resize to keep in the limits of `BannerDim`
- Encode to match the file size limits define for banner
- Don't scale up. This can be done efficiently in the UI

Changes to `images` module

- Refactor `EncodeToBestSize` as `EncodeToLimits` to accept arbitrary dimensions
  and allow for custom size
- Define `DimensionLimits` for banner not to exceed 450 KB and a rough estimate
  for the ideal size
2022-05-27 14:42:14 +03:00
Vitaliy Vlasov
011238b1d1 Wallet sync 2022-05-18 15:25:20 +03:00
Pascal Precht
714c03c635 feat: introduce CommunityAdminSettings in CommunityDescription
This allows to store community admin settings that are meant to be propagated
to community members (as opposed to the already existing
`CommunitySettings` which are considered local to every account).

The first setting introduced as part of this commit is one that enables
community admins to configure whether or not members of the community
are allowed to pin messages in community channels.

Prior to this commit, this was not restricted at all on the protocol
level and only enforced by clients via UI (e.g. members don't see an
option to pin messages, although they could).

This config setting now ensures that:

1. If turned off, members cannot send a pin message
2. If turned off, pin messages from members are not handled/processed

This is needed by https://github.com/status-im/status-desktop/issues/5662
2022-05-18 09:58:11 +02:00
Anthony Laibe
997708bc82 fix: flakey test with order of chats 2022-05-13 16:17:24 +02:00
Richard Ramos
2be7e53a89 fix: community was not updated when creating general chat 2022-05-13 16:17:24 +02:00
Sale Djenic
b4fd62df58 tests update 2022-05-13 16:17:24 +02:00
Audrius Molis
a244d77657 Enable currency settings and sticker pack synchronization 2022-05-11 16:59:12 +03:00
Andrea Maria Piana
4d15ae8a85 Upgrade to go 1.18 2022-05-11 12:39:54 +01:00
Anthony Laibe
6b9f9a896a
feat: create General channel with community creation (#2662) 2022-05-10 15:25:08 +02:00
Pascal Precht
d11290ef4a fix: only dispatch magnetlink when owner of community 2022-05-10 11:27:31 +02:00
Pascal Precht
43d6305157 Handle history archive magnetlink messages
This introduces the ability for status notes to handle community
history archive magnetlinks. To make this work, a few things are needed:

1. A new database table has been introduced to store message archive
   hashes. This is necessary so status nodes can determine whether or
   not they need to download a certain archive
2. The messenger's `handleRetrievedMessages()` has been exteded to take
   magnetlink messages into account
3. New APIs were added to download torrent data given a magnetlink and
   also to extract messages from downloaded archives, which are then
   later fed to `handleRetrievedMessages`

Closes #2568
2022-05-10 11:27:31 +02:00
Richard Ramos
0048aaebcc
feat: add IPFS rate limiter for downloading stickers and use http server for retrieving stickers (#2611) 2022-05-09 09:07:57 -04:00
Roman Volosovskyi
c531bf2ca1
Fix syncing of adding contact after removal 2022-04-25 11:02:49 +02:00
Vitaliy Vlasov
16197dc807 Sync profile picture 2022-04-21 19:50:31 +03:00
Roman Volosovskyi
9de4eb3c8a
Backup deleted communities 2022-04-14 18:01:07 +02:00
Sale Djenic
10d0133974 fix: set only blocked flag to blocked contact for desktop app 2022-04-12 09:42:43 +02:00
Pascal Precht
631907839a Enable history archive support for all non-admin communities
Previously, we've turned archive support off by default, this means,
community member nodes won't try to download torrent data when they
receive a magnetlink.

This commit ensures that communities joined in the future will have
this setting on, and also all existing communities that the node
isn't admin of will have this feature enabled.
2022-04-11 15:41:36 +02:00
osmaczko
89626d997e
Populate colorHash and colorId (#2630)
* feat: add colorId utility

it returns color id for given pubkey

* feat: populate Account with colorHash and colorId

accounts displayed to users on login page should display colorHash and
avatar fallback color (aka colorId)
2022-04-08 13:54:29 -04:00
Parvesh Monu
3050106595 Dismiss activity center notifications of group on leave or Mark read 2022-04-06 22:41:14 +05:30
Parvesh Monu
14ed8ba5e8 Dismiss activity center notifications of community on leave or Mark read 2022-04-06 22:41:14 +05:30
Pascal Precht
7032fc9dcc Introduce community history archive routine
This introduces logic needed to:

- Create WakuMessageArchives and and indices from store waku messages
- History archive torrent data to disk and create .torrent file from
  that
- Seed and unseed history archive torrents as necessary
- Starting/stopping the torrent client
- Enabling/disabling community history support for individual components
  and starting/stopping the routine intervals accordingly

This does not yet handle magnet links (#2568)

Closes #2567
2022-04-06 13:00:33 +02:00
Pascal Precht
364838532f Add torrent library dependency 2022-04-06 11:48:16 +02:00
Parvesh Monu
724689086c
return muted chats in ChatsPreview call (#2617) 2022-04-01 14:20:38 +05:30
Andrea Maria Piana
8a5f77dc37 Address linter issues 2022-03-28 13:14:12 +01:00
Pascal Precht
3b3921f483 Make community owners store waku message payloads
This is needed so that when they are bundled into archives, receiving
nodes can still verify the messages payload using its signature.

This commit introduces a new `waku_messages` table and APIs to store
such messages. Waku message payload is store for any message that has
a topic that matches any of the admin communities chats.

Closes #2566
2022-03-28 11:24:23 +02:00
Andrea Maria Piana
a3c60528ef Use batches & don't shadow community var 2022-03-24 21:09:22 +00:00
Samuel Hawksby-Robinson
e67592d556
Sync Settings (#2478)
* Sync Settings

* Added valueHandlers and Database singleton

Some issues remain, need a way to comparing incoming sql.DB to check if the connection is to a different file or not. Maybe make singleton instance per filename

* Added functionality to check the sqlite filename

* Refactor of Database.SaveSyncSettings to be used as a handler

* Implemented inteface for setting sync protobuf factories

* Refactored and completed adhoc send setting sync

* Tidying up

* Immutability refactor

* Refactor settings into dedicated package

* Breakout structs

* Tidy up

* Refactor of bulk settings sync

* Bug fixes

* Addressing feedback

* Fix code dropped during rebase

* Fix for db closed

* Fix for node config related crashes

* Provisional fix for type assertion - issue 2

* Adding robust type assertion checks

* Partial fix for null literal db storage and json encoding

* Fix for passively handling nil sql.DB, and checking if elem has len and if len is 0

* Added test for preferred name behaviour

* Adding saved sync settings to MessengerResponse

* Completed granular initial sync and clock from network on save

* add Settings to isEmpty

* Refactor of protobufs, partially done

* Added syncSetting receiver handling, some bug fixes

* Fix for sticker packs

* Implement inactive flag on sync protobuf factory

* Refactor of types and structs

* Added SettingField.CanSync functionality

* Addressing rebase artifact

* Refactor of Setting SELECT queries

* Refactor of string return queries

* VERSION bump and migration index bump

* Deactiveate Sync Settings

* Deactiveated preferred_name and send_status_updates

Co-authored-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2022-03-23 18:47:00 +00:00
Andrea Maria Piana
f0d3e0419d Backup communities 2022-03-23 14:45:52 +00:00
Pascal Precht
bf8e71cfa9 Introduce CommunitySettings to store community related settings
These are used to store settings for individual communities a
user is part of, either as member or as owner.
This included whether or not the community history archive protocol
is enabled.

This adds a new `CommunitySettings` type and adds
a migration script that introduces a new `communities_settings`
table.

It also extends the `MessengerResponse` type to include
`CommunitySettings` which are honored when communities are being
added, edited, joined or left.

Lastly, this adds a new RPC API to retreive the settings.

Closes #2564
2022-03-22 12:33:40 +01:00