nextcloud / nextcloud/talk-android

New scheme for room (replace ArbitraryStorage table and datastore)

Open
#3,569 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop enhancement
Dominant language
Kotlin
Stars
739
Forks
321
Avg merge
14h 59m
Merged PRs (30d)
151

Description

Currently the app uses datastore and room, while room only has 2 tables (User and ArbitraryStorage).
It's currently not clear when to use datastore(via AppPreferencesImpl) or ArbitraryStorage.

There should be only room used to store any data.
ArbitraryStorage should be replaced as it contains mixed usecases which is not good (user settings and conversation settings).

A new scheme must be created which for the beginning contains tables for:

  • app wide settings
  • user wide settings
  • conversation settings

while always having in mind that in the long term we also want to have full offline support.

Chat
  • Develop offline-first data layer for chat
    • #3630
  • Devise and implement DB Schema to enable reading from chat offline
    • #3928
  • Create Background job to monitor network connections
  • Implement Pull-Based Synchronization to update DB on internet connection.
Conversations
  • todo
User Settings
  • todo
App Settings
  • todo

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing AppPreferencesImpl and ArbitraryStorage usage, then review the completed chat work in issues #3630 and #3928. The intended result is a Room-based scheme covering app-wide, user-wide, and conversation settings, with the remaining Conversations, User Settings, and App Settings work completed and the old mixed storage approach replaced.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
database, mobile
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.