Commit Graph

65 Commits

Author SHA1 Message Date
Andy Scherzinger
69ed8207d0
fix: ktlintCheck by reformatting kt code
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-08-17 20:20:42 +02:00
Marcel Hibbe
8885b999ca
bump database version to 11 + add migration
comment in openHelperFactory

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:07 +02:00
Marcel Hibbe
6e2ee1f001
add index to ChatBlockEntity
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:07 +02:00
Marcel Hibbe
edc0554fd2
sort entity attributes of ChatMessageEntity and ConversationEntity alphabetically
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:07 +02:00
Marcel Hibbe
76e6bb0f82
set values to not nullable in ChatMessage wherever this makes sense
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:07 +02:00
Marcel Hibbe
a632765cce
set values to not nullable in ConversationEntity.kt wherever this makes sense
remove roomId from Conversation (deprecated. only token should be used)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
9892613984
rearrange ConversationEntity columns to match documentation
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
da04f536f7
remove dao methods to delete data when user is removed
...will be done by foreign keys cascading. Therefore, also added foreign key to ChatBlockEntity

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
e951b3d53a
fix to load newest conversations (online first)
Before, old conversations that were left still occurred in the list (only adding+updating was done, but never deleting)

also, the list is up to date when coming back from chat. Otherwise there may be unread messages shown for a short moment which were already read.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
fe4bf942ab
remove SyncableModel and SyncUtils
not needed for our requirements + it simplifies code

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:05 +02:00
Marcel Hibbe
0390c93ed2
implement lastCommonRead handling
contains one workaround for now, see TODO in updateUiForLastCommonRead method

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:04 +02:00
Marcel Hibbe
299e8508c4
handle CLEARED_CHAT for scrolling into past
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:04 +02:00
Marcel Hibbe
85f4d8cd92
handle special system messages in ChatRepo instead in UI
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:04 +02:00
Marcel Hibbe
2408d639e4
Offline support for conversations and chats
Authors: Julius Linus and Marcel Hibbe

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:03 +02:00
Andy Scherzinger
f5a4274e54
Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-03-29 15:42:11 +01:00
Marcel Hibbe
754b825096
pass spreedCapabilities instead user to CapabilitiesUtil
To support federated rooms, capabilities have to be checked from the room which now also has capabilities.
If room is not federated, capabilities fromuser are still checked.
This is why CapabilitiesUtil had to be refactored to accept SpreedCapabilities which can come from room or user.

Other than that, many other changes were made as a result of this change.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-03-01 11:25:11 +01:00
Marcel Hibbe
c7a72aaf4a
add diagnose screen and permission warnings in settings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-01-12 09:54:28 +01:00
Andy Scherzinger
3f911965bd
ktlint: Property name should start with a lowercase letter and use camel case
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-12-05 16:37:53 +01:00
Andy Scherzinger
357b580a84
Bump room to 2.6.0 and rename paramter to match super class in case of use of names paramters
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-10-19 10:55:20 +02:00
Andy Scherzinger
bb9925b12c
Fix code formatting for kotlin files
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-09-21 23:27:27 +02:00
Andy Scherzinger
079e527f21
Add DB migration
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-09-21 23:27:27 +02:00
tobiasKaminsky
3c20251047
primary key
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
2023-09-21 23:27:27 +02:00
Marcel Hibbe
817ea1ab64 Avoid to send conversation and user via intent
sending too much data via intent always is a bad pattern which can lead to TransactionTooLargeException.

When OpenAI translation is enabled, the capabilities contain a ton of translation combinations. These capabilities are contained in 'currentUser' as well in 'selectedConversation'. So, TransactionTooLargeException was thrown.

this PR:
- avoids passing too much data as parcelables in intents (esp. conversation and user)
- introduces MVVM patterns to load required data (esp conversation) from backend (for now via requests, in the future from database first)
- introduces ConversationModel which is created out of the Conversation json model
- loads user data via injection when possible
- creates some quickfixes in ConversationBottomDialog, EntryMenuController and OperationsMenuController.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-06-30 07:30:18 +02:00
Marcel Hibbe
eab052d2ac
Delete unused methods
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-04-26 09:53:19 +02:00
Marcel Hibbe
e362e8e3d0
Handle new capabilities json structure
Because of "supported-reactions" and "predefined-backgrounds" the capabilities cannot be parsed with
`var config: HashMap<String, HashMap<String, String>>?`

As a result it was not possible to login into the app.

This is now
`var config: HashMap<String, HashMap<String, @RawValue @Contextual Any>>?` while always checking for the type when accessing the values.

"supported-reactions" and "predefined-backgrounds" are not handled yet.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-04-21 17:29:53 +02:00
Andy Scherzinger
825354881e
Reformat code
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-02-16 11:41:32 +01:00
Andy Scherzinger
41d671ff47
Fix code formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-02-16 09:57:19 +01:00
Andy Scherzinger
95c3123727
Migrate to new parcelize Implementation for Kotlin 1.8, also extend chatKit MessageInput to provide access to UI elements of that component
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-12-30 16:58:42 +01:00
Álvaro Brey
a37f947eb9
PushUtils: update only pushState when updating users
This is to work around a race condition where this class would asynchronously overwrite other user attributes
with old values after a user switch.

Co-authored-by: Marcel Hibbe <dev@mhibbe.de>
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-12-15 13:11:40 +01:00
Álvaro Brey
25dd46f95a
UsersDao: fix wrong attribute used in setUserAsActive
Co-authored-by: Marcel Hibbe <dev@mhibbe.de>
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-12-15 13:11:40 +01:00
Marcel Hibbe
962b1d4e3a
WIP. replace loop to set current state of users by single UPDATE query
i was able to see that the loop was somehow interrupted during debugging which caused two users to have current =true

this should avoid the problem with the loop.

anyway, this doesn't seem to solve the issue completely as i was able to reproduce it again with the new solution. so maybe there are still more methods/scenarios which can cause this.

additionally, i managed to have all users to have current =false with this new query (while switching accounts very fast and often in ChooseAccountDialogFragment..)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-12-15 13:11:39 +01:00
Marcel Hibbe
d4e545e67d
use setUserAsActive instead of userManager.disableAllUsersWithoutId
just refactoring for now. this doesn't solve the bug!

Problem that needs to be solved:
When adding a new Account (User), it is marked as "current", while for the other logged in users "current" must be unset (-> disabled).

The problem is, that for the old active user, "current" is not unset so there were multiple accounts marked as "current".

In the ChooseAccountDialogFragment, only one of the current accounts is shown at the top. Below the set status field, all accounts are listed that are not marked with "current". So as a result, there can be accounts hidden that were marked as "current".

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-12-15 13:11:35 +01:00
Álvaro Brey
a8e99862f1
Automatically update current user with room observable
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:34 +02:00
Andy Scherzinger
9b48bfedf6
remove unused imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 22:13:06 +02:00
Andy Scherzinger
f951336d0d
remove unused persistence methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 21:55:03 +02:00
Andy Scherzinger
125d6770b4
plug cipher migration hook into room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 20:33:47 +02:00
Andy Scherzinger
27017aac9e
Migrate AccountRemovalWorker from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 14:29:41 +02:00
Andy Scherzinger
00f55f1949
use correct primary key to search for any other users in the DB and use current value from user attributes object
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-22 19:50:29 +02:00
Andy Scherzinger
6e05056b2e
Migrate AccountVerificationController from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-22 13:52:32 +02:00
Álvaro Brey
886a3d0df2
UsersDao: make setUserAsActiveWithId blocking
Room won't accept non-blocking @Transactions, which makes sense

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-07-01 08:59:22 +02:00
Álvaro Brey
0ac26f557b
UsersDao/Repository: get rid of suspend functions
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-07-01 08:59:22 +02:00
Álvaro Brey
f339648875
UsersDao: fix race condition in setUserAsActiveWithId
Make the method return a Single instead, and don't make it a suspend function

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-07-01 08:59:22 +02:00
Andy Scherzinger
205292f9b0
fix review comments
Co-authored-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:21 +02:00
Andy Scherzinger
12f793567e
add arbitrary storage business layer
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:21 +02:00
Andy Scherzinger
a99a173612
fix getUsersScheduledForDeletion query
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:21 +02:00
Andy Scherzinger
3ccf41d1a6
fix getUsers query
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:20 +02:00
Andy Scherzinger
dc83403606
Move from Single to Maybe
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:20 +02:00
Andy Scherzinger
9b55241881
remove unneeded @Serializable
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:17 +02:00
Andy Scherzinger
3b1d4b86a9
Add model to ArbitraryStorage db layer
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:16 +02:00
Andy Scherzinger
a207ad7b97
Rename ArbitraryStorageNgEntity to ArbitraryStorageEntity
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-01 08:59:16 +02:00