Skip to content

Migration to Jetpack Compose #2483

Open
@TheLastProject

Description

@TheLastProject

Catima uses a lot of "legacy" tech. Java, Android XML. It's become very obvious Google is no longer committed to these technologies and is definitely not giving them the love they need anymore.

To ensure we can use Jetpack Compose, we will have to first migrate things to Kotlin and then Compose them slowly. We can, however, do this per-activity.

Help is very much appreciated here! If there's any part you are willing to do, please help! This is a huge undertaking!

Global changes

  • Get rid of custom colour support in Catima (this feature is rarely used and will add to the load of creating themes for the Compose code)
  • Create a Compose theme as similar as possible to the current theme (so the Compose and non-compose parts feel similar)

Per activity changes

MainActivity

  • Convert to Kotlin
  • Convert to Compose

AboutActivity

ManageGroupsActivity

  • Convert to Kotlin
  • Convert to Compose

ManageGroupActivity

  • Convert to Kotlin
  • Convert to Compose

LoyaltyCardViewActivity

  • Split into LoyaltyCardViewActivity and LoyaltyCardFullscreenViewActivity (to simplify the UI and card code)
  • Convert each of the new activities to Kotlin
  • Convert each of the new activities to Compose

LoyaltyCardEditActivity

  • Convert to Kotlin
  • Convert to Compose

ScanActivity

  • Convert to Kotlin
  • Convert to Compose

(May be quite a challenge with the zxing code)

BarcodeSelectorActivity

  • Convert to Kotlin
  • Convert to Compose

preferences.SettingsActivity

  • Convert to Kotlin
  • Convert to Compose

(This settings activity works strangely, do we need anything else to make this work?)

ImportExportActivity

  • Convert to Kotlin
  • Convert to Compose

CardShortcutConfigure

  • Convert to Kotlin
  • Convert to Compose

UCropWrapper

  • Convert to Kotlin
  • Convert to Compose

(Is this viable? Consider switching library)

Metadata

Metadata

Assignees

No one assigned

    Labels

    severity: minorImpairs non-critical functionality or suitable workarounds existstate: help wantedI looked into this issue but couldn't solve it quicklytype: enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions