From 15e3299e60eb4bc2c75cdc133ddaf3717eba19f1 Mon Sep 17 00:00:00 2001 From: stslex Date: Mon, 4 Sep 2023 07:12:42 +0300 Subject: [PATCH 1/9] fix gradle issues --- .gitignore | 7 +- .idea/.gitignore | 3 - .idea/codeStyles/Project.xml | 123 --------------------------- .idea/codeStyles/codeStyleConfig.xml | 5 -- .idea/compiler.xml | 6 -- .idea/deploymentTargetDropDown.xml | 13 --- .idea/gradle.xml | 42 --------- .idea/jarRepositories.xml | 30 ------- .idea/kotlinc.xml | 6 -- .idea/migrations.xml | 10 --- .idea/misc.xml | 47 ---------- .idea/vcs.xml | 6 -- 12 files changed, 1 insertion(+), 297 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/kotlinc.xml delete mode 100644 .idea/migrations.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 198b536a..eda1dc9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,7 @@ *.iml .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml +/.idea .DS_Store /build /captures diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 7643783a..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c..00000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56e..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index c84a298d..00000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index f16bd6a0..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 4ef0f45a..00000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index fdf8d994..00000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml deleted file mode 100644 index f8051a6f..00000000 --- a/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index e499c37f..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7f..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From f7282d99250af354c3938f9348a99e4593ced258 Mon Sep 17 00:00:00 2001 From: stslex Date: Mon, 4 Sep 2023 08:34:11 +0300 Subject: [PATCH 2/9] init labels feature --- core/database/build.gradle.kts | 1 + .../1.json | 52 -------------- .../2.json | 52 -------------- .../3.json | 52 -------------- .../4.json | 52 -------------- .../5.json | 52 -------------- .../core/database/database/AutoMigrations.kt | 16 +++++ .../core/database/database/Converters.kt | 21 ++++++ .../database/database/NoteRoomDatabase.kt | 69 ++++++++++--------- .../notes/core/database/di/DatabaseApi.kt | 7 +- .../notes/core/database/di/DatabaseModule.kt | 20 +++--- .../notes/core/database/label/LabelDao.kt | 34 +++++++++ .../notes/core/database/label/LabelEntity.kt | 18 +++++ .../notes/core/database/{ => note}/NoteDao.kt | 9 +-- .../database/{model => note}/NoteEntity.kt | 12 ++-- .../notes/core/database/NoteDaoTest.kt | 19 ++--- .../core/database/NoteRoomDatabaseTest.kt | 3 +- core/label/.gitignore | 1 + core/label/build.gradle.kts | 12 ++++ core/label/consumer-rules.pro | 0 core/label/proguard-rules.pro | 21 ++++++ .../core/label/ExampleInstrumentedTest.kt | 24 +++++++ core/label/src/main/AndroidManifest.xml | 4 ++ .../stslex93/notes/core/label/di/LabelApi.kt | 8 +++ .../notes/core/label/di/LabelApiBuilder.kt | 19 +++++ .../notes/core/label/di/LabelComponent.kt | 27 ++++++++ .../notes/core/label/di/LabelDependencies.kt | 8 +++ .../notes/core/label/di/LabelModule.kt | 15 ++++ .../notes/core/label/model/LabelDataMapper.kt | 21 ++++++ .../notes/core/label/model/LabelDataModel.kt | 13 ++++ .../core/label/repository/LabelPagerExt.kt | 36 ++++++++++ .../core/label/repository/LabelRepository.kt | 18 +++++ .../label/repository/LabelRepositoryImpl.kt | 52 ++++++++++++++ .../notes/core/label/ExampleUnitTest.kt | 17 +++++ .../notes/core/notes/di/NoteDependencies.kt | 2 +- .../notes/core/notes/model/NoteDataMapper.kt | 5 +- .../core/notes/repository/NoteRepository.kt | 4 -- .../notes/repository/NoteRepositoryImpl.kt | 12 +--- settings.gradle.kts | 1 + 39 files changed, 464 insertions(+), 345 deletions(-) delete mode 100644 core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/1.json delete mode 100644 core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/2.json delete mode 100644 core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/3.json delete mode 100644 core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/4.json delete mode 100644 core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/5.json create mode 100644 core/database/src/main/java/com/stslex93/notes/core/database/database/AutoMigrations.kt create mode 100644 core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt create mode 100644 core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt create mode 100644 core/database/src/main/java/com/stslex93/notes/core/database/label/LabelEntity.kt rename core/database/src/main/java/com/stslex93/notes/core/database/{ => note}/NoteDao.kt (77%) rename core/database/src/main/java/com/stslex93/notes/core/database/{model => note}/NoteEntity.kt (74%) create mode 100644 core/label/.gitignore create mode 100644 core/label/build.gradle.kts create mode 100644 core/label/consumer-rules.pro create mode 100644 core/label/proguard-rules.pro create mode 100644 core/label/src/androidTest/java/com/stslex93/notes/core/label/ExampleInstrumentedTest.kt create mode 100644 core/label/src/main/AndroidManifest.xml create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApi.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApiBuilder.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/di/LabelComponent.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/di/LabelDependencies.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/di/LabelModule.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataMapper.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataModel.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelPagerExt.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt create mode 100644 core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt create mode 100644 core/label/src/test/java/com/stslex93/notes/core/label/ExampleUnitTest.kt diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 3c085568..16d4a7da 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -8,6 +8,7 @@ dependencies { ksp(libs.androidx.room.compiler) androidTestApi(libs.androidx.room.testing) implementation(libs.androidx.paging.runtime) + implementation("com.google.code.gson:gson:2.10.1") } ksp { diff --git a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/1.json b/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/1.json deleted file mode 100644 index cec15595..00000000 --- a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/1.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 1, - "identityHash": "abd07e58b041ccfda6e6ce011cf9f97b", - "entities": [ - { - "tableName": "note_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "title", - "columnName": "title", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "content", - "columnName": "content", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "timestamp", - "columnName": "timestamp", - "affinity": "INTEGER", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'abd07e58b041ccfda6e6ce011cf9f97b')" - ] - } -} \ No newline at end of file diff --git a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/2.json b/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/2.json deleted file mode 100644 index d5b4e1b2..00000000 --- a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/2.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 2, - "identityHash": "abd07e58b041ccfda6e6ce011cf9f97b", - "entities": [ - { - "tableName": "note_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "title", - "columnName": "title", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "content", - "columnName": "content", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "timestamp", - "columnName": "timestamp", - "affinity": "INTEGER", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'abd07e58b041ccfda6e6ce011cf9f97b')" - ] - } -} \ No newline at end of file diff --git a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/3.json b/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/3.json deleted file mode 100644 index 7d6ca271..00000000 --- a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/3.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 3, - "identityHash": "abd07e58b041ccfda6e6ce011cf9f97b", - "entities": [ - { - "tableName": "note_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "title", - "columnName": "title", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "content", - "columnName": "content", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "timestamp", - "columnName": "timestamp", - "affinity": "INTEGER", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'abd07e58b041ccfda6e6ce011cf9f97b')" - ] - } -} \ No newline at end of file diff --git a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/4.json b/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/4.json deleted file mode 100644 index 8d626237..00000000 --- a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/4.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 4, - "identityHash": "abd07e58b041ccfda6e6ce011cf9f97b", - "entities": [ - { - "tableName": "note_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "title", - "columnName": "title", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "content", - "columnName": "content", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "timestamp", - "columnName": "timestamp", - "affinity": "INTEGER", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'abd07e58b041ccfda6e6ce011cf9f97b')" - ] - } -} \ No newline at end of file diff --git a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/5.json b/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/5.json deleted file mode 100644 index fb6f164e..00000000 --- a/core/database/schemas/com.stslex93.notes.core.database.database.NoteRoomDatabase/5.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 5, - "identityHash": "abd07e58b041ccfda6e6ce011cf9f97b", - "entities": [ - { - "tableName": "note_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "title", - "columnName": "title", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "content", - "columnName": "content", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "timestamp", - "columnName": "timestamp", - "affinity": "INTEGER", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'abd07e58b041ccfda6e6ce011cf9f97b')" - ] - } -} \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/database/AutoMigrations.kt b/core/database/src/main/java/com/stslex93/notes/core/database/database/AutoMigrations.kt new file mode 100644 index 00000000..fe537923 --- /dev/null +++ b/core/database/src/main/java/com/stslex93/notes/core/database/database/AutoMigrations.kt @@ -0,0 +1,16 @@ +package com.stslex93.notes.core.database.database + +import androidx.room.migration.AutoMigrationSpec + +object AutoMigrations { + + val AUTO_MIGRATION_1_2 = object : AutoMigrationSpec {} + + val AUTO_MIGRATION_2_3 = object : AutoMigrationSpec {} + + val AUTO_MIGRATION_3_4 = object : AutoMigrationSpec {} + + val AUTO_MIGRATION_4_5 = object : AutoMigrationSpec {} + + val AUTO_MIGRATION_5_6 = object : AutoMigrationSpec {} +} \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt b/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt new file mode 100644 index 00000000..0af5f7bb --- /dev/null +++ b/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt @@ -0,0 +1,21 @@ +package com.stslex93.notes.core.database.database + +import androidx.room.TypeConverter +import com.google.gson.Gson + +class Converters { + + @TypeConverter + fun jsonListString( + value: List? + ): String = Gson().toJson(value ?: emptyList()) + + @TypeConverter + fun jsonToListString( + value: String + ): List = if (value.isBlank()) { + emptyList() + } else { + Gson().fromJson(value, Array::class.java).toList() + } +} \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/database/NoteRoomDatabase.kt b/core/database/src/main/java/com/stslex93/notes/core/database/database/NoteRoomDatabase.kt index 99559dfe..dd6246fd 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/database/NoteRoomDatabase.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/database/NoteRoomDatabase.kt @@ -1,43 +1,50 @@ package com.stslex93.notes.core.database.database -import androidx.room.AutoMigration +import android.content.Context import androidx.room.Database +import androidx.room.Room import androidx.room.RoomDatabase -import androidx.room.migration.AutoMigrationSpec -import com.stslex93.notes.core.database.NoteDao -import com.stslex93.notes.core.database.model.NoteEntity -import com.stslex93.notes.core.database.database.NoteRoomDatabase.Companion.SCHEMA_VERSION +import androidx.room.TypeConverters +import com.stslex93.notes.core.database.database.AutoMigrations.AUTO_MIGRATION_1_2 +import com.stslex93.notes.core.database.database.AutoMigrations.AUTO_MIGRATION_2_3 +import com.stslex93.notes.core.database.database.AutoMigrations.AUTO_MIGRATION_3_4 +import com.stslex93.notes.core.database.database.AutoMigrations.AUTO_MIGRATION_4_5 +import com.stslex93.notes.core.database.database.AutoMigrations.AUTO_MIGRATION_5_6 +import com.stslex93.notes.core.database.label.LabelDao +import com.stslex93.notes.core.database.label.LabelEntity +import com.stslex93.notes.core.database.note.NoteDao +import com.stslex93.notes.core.database.note.NoteEntity @Database( - entities = [NoteEntity::class], - version = SCHEMA_VERSION, - exportSchema = true, - autoMigrations = [ - AutoMigration( - from = SCHEMA_VERSION - 3, - to = SCHEMA_VERSION - 2, - spec = NoteRoomDatabase.NoteAutoMigration::class - ), - AutoMigration( - from = SCHEMA_VERSION - 2, - to = SCHEMA_VERSION - 1, - spec = NoteRoomDatabase.NoteAutoMigration::class - ), - AutoMigration( - from = SCHEMA_VERSION - 1, - to = SCHEMA_VERSION, - spec = NoteRoomDatabase.NoteAutoMigration::class - ), - ] + entities = [ + NoteEntity::class, + LabelEntity::class + ], + version = 6, + exportSchema = false, ) +@TypeConverters(Converters::class) abstract class NoteRoomDatabase : RoomDatabase() { - abstract val dao: NoteDao - - class NoteAutoMigration : AutoMigrationSpec + abstract val noteDao: NoteDao + abstract val labelDao: LabelDao companion object { - const val SCHEMA_VERSION: Int = 5 - const val DB_NAME = "db.note" + private const val DB_NAME = "db.note" + + fun build( + context: Context + ) = Room + .databaseBuilder( + context, + NoteRoomDatabase::class.java, + DB_NAME + ) + .addAutoMigrationSpec(AUTO_MIGRATION_1_2) + .addAutoMigrationSpec(AUTO_MIGRATION_2_3) + .addAutoMigrationSpec(AUTO_MIGRATION_3_4) + .addAutoMigrationSpec(AUTO_MIGRATION_4_5) + .addAutoMigrationSpec(AUTO_MIGRATION_5_6) + .build() } -} \ No newline at end of file +} diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseApi.kt b/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseApi.kt index 0e42d8e8..106d56ba 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseApi.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseApi.kt @@ -1,8 +1,11 @@ package com.stslex93.notes.core.database.di -import com.stslex93.notes.core.database.NoteDao +import com.stslex93.notes.core.database.label.LabelDao +import com.stslex93.notes.core.database.note.NoteDao interface DatabaseApi { - val dao: NoteDao + val noteDao: NoteDao + + val labelDao: LabelDao } \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseModule.kt b/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseModule.kt index 1044a7f3..79965fe7 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseModule.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/di/DatabaseModule.kt @@ -2,8 +2,9 @@ package com.stslex93.notes.core.database.di import android.content.Context import androidx.room.Room -import com.stslex93.notes.core.database.NoteDao +import com.stslex93.notes.core.database.note.NoteDao import com.stslex93.notes.core.database.database.NoteRoomDatabase +import com.stslex93.notes.core.database.label.LabelDao import dagger.Module import dagger.Provides import javax.inject.Singleton @@ -13,12 +14,13 @@ class DatabaseModule { @Provides @Singleton - fun provideDao(context: Context): NoteDao = Room - .databaseBuilder( - context, - NoteRoomDatabase::class.java, - NoteRoomDatabase.DB_NAME - ) - .build() - .dao + fun provideDataBase(context: Context): NoteRoomDatabase = NoteRoomDatabase.build(context) + + @Provides + @Singleton + fun provideNoteDao(database: NoteRoomDatabase): NoteDao = database.noteDao + + @Provides + @Singleton + fun provideLabelDao(database: NoteRoomDatabase): LabelDao = database.labelDao } \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt new file mode 100644 index 00000000..21e0a389 --- /dev/null +++ b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt @@ -0,0 +1,34 @@ +package com.stslex93.notes.core.database.label + +import androidx.paging.PagingSource +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import kotlinx.coroutines.flow.Flow + +@Dao +interface LabelDao { + + @Query("SELECT * FROM label_table WHERE uuid = :uuid LIMIT 1") + fun getLabel(uuid: String): Flow + + @Query("SELECT * FROM label_table WHERE uuid in (:uuids)") + fun getMatchLabels(uuids: List): Flow> + + @Query( + "SELECT * FROM label_table " + + "WHERE title LIKE '%' || :query || '%'" + + "ORDER BY timestamp DESC" + ) + fun search(query: String): PagingSource + + @Query("SELECT * FROM label_table ORDER BY timestamp DESC") + fun getAll(): PagingSource + + @Query("DELETE from label_table WHERE uuid = :uuid") + suspend fun removeLabel(uuid: String) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun addLabel(label: LabelEntity) +} \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelEntity.kt b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelEntity.kt new file mode 100644 index 00000000..89b2650b --- /dev/null +++ b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelEntity.kt @@ -0,0 +1,18 @@ +package com.stslex93.notes.core.database.label + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "label_table") +data class LabelEntity( + @PrimaryKey + @ColumnInfo(name = "uuid") + val uuid: String, + @ColumnInfo(name = "title") + val title: String, + @ColumnInfo(name = "color_rgb") + val colorRgb: Int, + @ColumnInfo(name = "timestamp") + val timestamp: String +) \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/NoteDao.kt b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteDao.kt similarity index 77% rename from core/database/src/main/java/com/stslex93/notes/core/database/NoteDao.kt rename to core/database/src/main/java/com/stslex93/notes/core/database/note/NoteDao.kt index bf0ffccb..3c4c7a4e 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/NoteDao.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteDao.kt @@ -1,11 +1,10 @@ -package com.stslex93.notes.core.database +package com.stslex93.notes.core.database.note import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.stslex93.notes.core.database.model.NoteEntity import kotlinx.coroutines.flow.Flow @Dao @@ -25,9 +24,6 @@ interface NoteDao { @Query("SELECT * FROM note_table WHERE id=:id") fun getNote(id: Int): Flow - @Query("SELECT * FROM note_table ORDER BY timestamp DESC LIMIT 1") - fun getLastNote(): Flow - @Query("SELECT * FROM note_table WHERE id IN (:ids)") fun getNotesById(ids: List): Flow> @@ -37,9 +33,6 @@ interface NoteDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insert(note: NoteEntity) - @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun insertAll(note: List) - @Query("DELETE FROM note_table") suspend fun deleteAll() } \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/model/NoteEntity.kt b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt similarity index 74% rename from core/database/src/main/java/com/stslex93/notes/core/database/model/NoteEntity.kt rename to core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt index 4cdfdcb3..d8ca45ef 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/model/NoteEntity.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt @@ -1,4 +1,4 @@ -package com.stslex93.notes.core.database.model +package com.stslex93.notes.core.database.note import androidx.room.ColumnInfo import androidx.room.Entity @@ -6,17 +6,15 @@ import androidx.room.PrimaryKey @Entity(tableName = "note_table") data class NoteEntity( - @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Int = 0, - @ColumnInfo(name = "title") val title: String, - @ColumnInfo(name = "content") val content: String, - @ColumnInfo(name = "timestamp") - val timestamp: Long -) \ No newline at end of file + val timestamp: Long, + @ColumnInfo(name = "labels") + val labels: List +) diff --git a/core/database/src/test/java/com/stslex93/notes/core/database/NoteDaoTest.kt b/core/database/src/test/java/com/stslex93/notes/core/database/NoteDaoTest.kt index 26d64406..16dcd7ed 100644 --- a/core/database/src/test/java/com/stslex93/notes/core/database/NoteDaoTest.kt +++ b/core/database/src/test/java/com/stslex93/notes/core/database/NoteDaoTest.kt @@ -5,7 +5,8 @@ import androidx.paging.PagingSource import androidx.room.Room import androidx.test.core.app.ApplicationProvider import com.stslex93.notes.core.database.database.NoteRoomDatabase -import com.stslex93.notes.core.database.model.NoteEntity +import com.stslex93.notes.core.database.note.NoteDao +import com.stslex93.notes.core.database.note.NoteEntity import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking @@ -27,7 +28,7 @@ class NoteDaoTest { context, NoteRoomDatabase::class.java, DATABASE_NAME ).build() - dao = database.dao + dao = database.noteDao } @Test @@ -56,7 +57,7 @@ class NoteDaoTest { @Test fun getNotesById() = runBlocking(Dispatchers.IO) { - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } val listOfIds = dao.getAllNotes().map { it.id.toString() } if (listOfIds.isEmpty()) { Assert.fail() @@ -67,12 +68,12 @@ class NoteDaoTest { @Test fun deleteNotesById() = runBlocking(Dispatchers.IO) { - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } val listOfIds = dao.getAllNotes().map { it.id } if (listOfIds.isEmpty()) { Assert.fail() } - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } dao.deleteNotesById(listOfIds) val allNotes = dao.getAllNotes() val isNotContains = allNotes.isEmpty() || allNotes.any { listOfIds.contains(it.id).not() } @@ -82,7 +83,7 @@ class NoteDaoTest { @Test fun insertAll() = runBlocking(Dispatchers.IO) { val beforeInsert = dao.getAllNotes().size - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } val afterInsert = dao.getAllNotes().size Assert.assertNotEquals(beforeInsert, afterInsert) } @@ -90,7 +91,7 @@ class NoteDaoTest { @Test fun deleteAll() = runBlocking(Dispatchers.IO) { val beforeInsert = dao.getAllNotes().size - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } val afterInsert = dao.getAllNotes().size Assert.assertNotEquals(beforeInsert, afterInsert) dao.deleteAll() @@ -100,7 +101,7 @@ class NoteDaoTest { @Test fun getAll() = runBlocking(Dispatchers.IO) { dao.deleteAll() - dao.insertAll(testListOfNotes) + testListOfNotes.forEach { dao.insert(it) } val mockedItems = dao.getAllNotes() val pagingSource = dao.getAll("") val loadResult = pagingSource.load( @@ -122,7 +123,7 @@ class NoteDaoTest { get() = contains(testNote.copy(id = last().id)) private val testNote: NoteEntity by lazy { - NoteEntity(0, "title", "content", System.currentTimeMillis()) + NoteEntity(0, "title", "content", System.currentTimeMillis(), emptyList()) } companion object { diff --git a/core/database/src/test/java/com/stslex93/notes/core/database/NoteRoomDatabaseTest.kt b/core/database/src/test/java/com/stslex93/notes/core/database/NoteRoomDatabaseTest.kt index 2a64271c..941e0a24 100644 --- a/core/database/src/test/java/com/stslex93/notes/core/database/NoteRoomDatabaseTest.kt +++ b/core/database/src/test/java/com/stslex93/notes/core/database/NoteRoomDatabaseTest.kt @@ -3,6 +3,7 @@ package com.stslex93.notes.core.database import android.content.Context import androidx.room.Room import androidx.test.core.app.ApplicationProvider +import com.stslex93.notes.core.database.note.NoteDao import com.stslex93.notes.core.database.database.NoteRoomDatabase import org.junit.AfterClass import org.junit.Assert @@ -27,7 +28,7 @@ class NoteRoomDatabaseTest { @Test fun t1GetDao() { - _dao = database.dao + _dao = database.noteDao Assert.assertNotNull(dao) } diff --git a/core/label/.gitignore b/core/label/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/core/label/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/label/build.gradle.kts b/core/label/build.gradle.kts new file mode 100644 index 00000000..4f7076f8 --- /dev/null +++ b/core/label/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + id("notes.android.library") +} + +android.namespace = "com.stslex93.notes.core.label" + +dependencies { + implementation(project(":core:core")) + implementation(project(":core:database")) + + implementation(libs.androidx.paging.runtime) +} \ No newline at end of file diff --git a/core/label/consumer-rules.pro b/core/label/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/core/label/proguard-rules.pro b/core/label/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/core/label/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/core/label/src/androidTest/java/com/stslex93/notes/core/label/ExampleInstrumentedTest.kt b/core/label/src/androidTest/java/com/stslex93/notes/core/label/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..7be61252 --- /dev/null +++ b/core/label/src/androidTest/java/com/stslex93/notes/core/label/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.stslex93.notes.core.label + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.stslex93.notes.core.label.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/core/label/src/main/AndroidManifest.xml b/core/label/src/main/AndroidManifest.xml new file mode 100644 index 00000000..a5918e68 --- /dev/null +++ b/core/label/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApi.kt b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApi.kt new file mode 100644 index 00000000..704898ab --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApi.kt @@ -0,0 +1,8 @@ +package com.stslex93.notes.core.label.di + +import com.stslex93.notes.core.label.repository.LabelRepository + +interface LabelApi { + + val repository: LabelRepository +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApiBuilder.kt b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApiBuilder.kt new file mode 100644 index 00000000..d809b4a4 --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelApiBuilder.kt @@ -0,0 +1,19 @@ +package com.stslex93.notes.core.label.di + +import com.stslex93.notes.core.core.AppApi +import com.stslex93.notes.core.database.di.DatabaseApiBuilder + +object LabelApiBuilder { + + fun build( + appApi: AppApi + ): LabelApi = DaggerLabelComponent + .factory() + .create( + dependencies = DaggerLabelComponent_LabelDependenciesComponent + .factory() + .create( + databaseApi = DatabaseApiBuilder.build(appApi) + ) + ) +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelComponent.kt b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelComponent.kt new file mode 100644 index 00000000..2c526031 --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelComponent.kt @@ -0,0 +1,27 @@ +package com.stslex93.notes.core.label.di + +import com.stslex93.notes.core.database.di.DatabaseApi +import dagger.Component +import javax.inject.Singleton + +@Component( + dependencies = [LabelDependencies::class], + modules = [LabelModule::class] +) +@Singleton +interface LabelComponent : LabelApi { + + @Component.Factory + interface Factory { + fun create(dependencies: LabelDependencies): LabelApi + } + + @Component(dependencies = [DatabaseApi::class]) + interface LabelDependenciesComponent : LabelDependencies { + + @Component.Factory + interface Factory { + fun create(databaseApi: DatabaseApi): LabelDependencies + } + } +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelDependencies.kt b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelDependencies.kt new file mode 100644 index 00000000..d03e90ca --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelDependencies.kt @@ -0,0 +1,8 @@ +package com.stslex93.notes.core.label.di + +import com.stslex93.notes.core.database.label.LabelDao + +interface LabelDependencies { + + val labelDao: LabelDao +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelModule.kt b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelModule.kt new file mode 100644 index 00000000..731d4c31 --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/di/LabelModule.kt @@ -0,0 +1,15 @@ +package com.stslex93.notes.core.label.di + +import com.stslex93.notes.core.label.repository.LabelRepository +import com.stslex93.notes.core.label.repository.LabelRepositoryImpl +import dagger.Binds +import dagger.Module +import javax.inject.Singleton + +@Module +interface LabelModule { + + @Binds + @Singleton + fun bindsLabelRepository(impl: LabelRepositoryImpl): LabelRepository +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataMapper.kt b/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataMapper.kt new file mode 100644 index 00000000..9e86fa0d --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataMapper.kt @@ -0,0 +1,21 @@ +package com.stslex93.notes.core.label.model + +import com.stslex93.notes.core.database.label.LabelEntity +import java.time.OffsetDateTime + +object LabelDataMapper { + + fun LabelEntity.toData(): LabelDataModel = LabelDataModel( + uuid = uuid, + title = title, + colorRgb = colorRgb, + timestamp = OffsetDateTime.parse(timestamp) + ) + + fun LabelDataModel.toEntity(): LabelEntity = LabelEntity( + uuid = uuid, + title = title, + colorRgb = colorRgb, + timestamp = timestamp.toString() + ) +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataModel.kt b/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataModel.kt new file mode 100644 index 00000000..47935ef5 --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/model/LabelDataModel.kt @@ -0,0 +1,13 @@ +package com.stslex93.notes.core.label.model + +import android.graphics.Color +import androidx.core.graphics.toColor +import java.time.OffsetDateTime +import java.util.UUID + +data class LabelDataModel( + val uuid: String = UUID.randomUUID().toString(), + val title: String, + val colorRgb: Int = Color.GRAY.toColor().toArgb(), + val timestamp: OffsetDateTime = OffsetDateTime.now() +) \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelPagerExt.kt b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelPagerExt.kt new file mode 100644 index 00000000..e84caa72 --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelPagerExt.kt @@ -0,0 +1,36 @@ +package com.stslex93.notes.core.label.repository + +import androidx.paging.Pager +import androidx.paging.PagingConfig +import androidx.paging.PagingData +import androidx.paging.PagingSource +import androidx.paging.map +import com.stslex93.notes.core.database.label.LabelEntity +import com.stslex93.notes.core.label.model.LabelDataMapper.toData +import com.stslex93.notes.core.label.model.LabelDataModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map + +object LabelPagerExt { + + const val PAGE_SIZE = 30 + const val IS_PLACEHOLDER_ENABLE = false + + inline fun getPagingLabels( + crossinline action: () -> PagingSource, + ): Flow> = Pager( + PagingConfig( + pageSize = PAGE_SIZE, + enablePlaceholders = IS_PLACEHOLDER_ENABLE + ) + ) { + action() + } + .flow + .map { pagingData -> + pagingData.map { it.toData() } + } + .flowOn(Dispatchers.IO) +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt new file mode 100644 index 00000000..d658d78a --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt @@ -0,0 +1,18 @@ +package com.stslex93.notes.core.label.repository + +import androidx.paging.PagingData +import com.stslex93.notes.core.label.model.LabelDataModel +import kotlinx.coroutines.flow.Flow + +interface LabelRepository { + + val allLabels: Flow> + + suspend fun addLabel(label: LabelDataModel) + + suspend fun removeLabel(uuid: String) + + fun getLabel(uuid: String): Flow + + fun searchLabels(query: String): Flow> +} \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt new file mode 100644 index 00000000..d6d9e44d --- /dev/null +++ b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt @@ -0,0 +1,52 @@ +package com.stslex93.notes.core.label.repository + +import androidx.paging.PagingData +import com.stslex93.notes.core.database.label.LabelDao +import com.stslex93.notes.core.label.model.LabelDataMapper.toData +import com.stslex93.notes.core.label.model.LabelDataMapper.toEntity +import com.stslex93.notes.core.label.model.LabelDataModel +import com.stslex93.notes.core.label.repository.LabelPagerExt.getPagingLabels +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.withContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class LabelRepositoryImpl @Inject constructor( + private val dao: LabelDao +) : LabelRepository { + + override val allLabels: Flow> + get() = getPagingLabels { + dao.getAll() + } + + override suspend fun addLabel(label: LabelDataModel) { + withContext(Dispatchers.IO) { + dao.addLabel(label.toEntity()) + } + } + + override suspend fun removeLabel(uuid: String) { + withContext(Dispatchers.IO) { + dao.removeLabel(uuid) + } + } + + override fun getLabel( + uuid: String + ): Flow = dao.getLabel(uuid) + .map { label -> + label.toData() + } + .flowOn(Dispatchers.IO) + + override fun searchLabels( + query: String + ): Flow> = getPagingLabels { + dao.search(query) + } +} diff --git a/core/label/src/test/java/com/stslex93/notes/core/label/ExampleUnitTest.kt b/core/label/src/test/java/com/stslex93/notes/core/label/ExampleUnitTest.kt new file mode 100644 index 00000000..61b12dba --- /dev/null +++ b/core/label/src/test/java/com/stslex93/notes/core/label/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.stslex93.notes.core.label + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/di/NoteDependencies.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/di/NoteDependencies.kt index d5a41b0d..df11f50c 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/di/NoteDependencies.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/di/NoteDependencies.kt @@ -1,6 +1,6 @@ package com.stslex93.notes.core.notes.di -import com.stslex93.notes.core.database.NoteDao +import com.stslex93.notes.core.database.note.NoteDao interface NoteDependencies { diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt index 9f069a89..bac4db1c 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt @@ -1,12 +1,13 @@ package com.stslex93.notes.core.notes.model -import com.stslex93.notes.core.database.model.NoteEntity +import com.stslex93.notes.core.database.note.NoteEntity fun NoteDataModel.toEntity() = NoteEntity( id = id, title = title, content = content, - timestamp = timestamp + timestamp = timestamp, + labels = emptyList() ) fun NoteEntity.toData() = NoteDataModel( diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepository.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepository.kt index 204ee683..8781009f 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepository.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepository.kt @@ -10,11 +10,7 @@ interface NoteRepository { fun getNote(id: Int): Flow - fun getLastNote(): Flow - suspend fun deleteNotesById(ids: List) suspend fun insert(note: NoteDataModel) - - suspend fun insertAll(notes: List) } \ No newline at end of file diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepositoryImpl.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepositoryImpl.kt index 6afce62d..f39da3a6 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepositoryImpl.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/repository/NoteRepositoryImpl.kt @@ -4,7 +4,7 @@ import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData import androidx.paging.map -import com.stslex93.notes.core.database.NoteDao +import com.stslex93.notes.core.database.note.NoteDao import com.stslex93.notes.core.notes.model.NoteDataModel import com.stslex93.notes.core.notes.model.toData import com.stslex93.notes.core.notes.model.toEntity @@ -25,10 +25,6 @@ class NoteRepositoryImpl @Inject constructor( .map { it.toData() } .flowOn(Dispatchers.IO) - override fun getLastNote(): Flow = dao.getLastNote() - .map { it.toData() } - .flowOn(Dispatchers.IO) - override fun searchNotes( query: String ): Flow> = @@ -58,12 +54,6 @@ class NoteRepositoryImpl @Inject constructor( } } - override suspend fun insertAll(notes: List) { - withContext(Dispatchers.IO) { - dao.insertAll(notes.map { it.toEntity() }) - } - } - companion object { private const val PAGE_SIZE = 15 private const val IS_PLACEHOLDER_ENABLE = false diff --git a/settings.gradle.kts b/settings.gradle.kts index 00e24a06..6f2d450c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,3 +26,4 @@ include(":feature:edit") include(":feature:home") include(":core:navigation") include(":core:core") +include(":core:label") From 5271895d78e2aa3f32d1bb7f71f3f4febe9168c6 Mon Sep 17 00:00:00 2001 From: stslex Date: Mon, 4 Sep 2023 21:43:04 +0300 Subject: [PATCH 3/9] init domain/store layer --- ...$apply$lambda$0$$inlined$getByType$1.class | Bin 0 -> 1567 bytes .../AndroidApplicationComposePlugin.class | Bin 0 -> 3513 bytes ...oidApplicationPlugin$apply$1$2$1$1$1.class | Bin 0 -> 2039 bytes ...droidApplicationPlugin$apply$1$2$1$1.class | Bin 0 -> 3436 bytes ...oidApplicationPlugin$apply$1$2$1$2$1.class | Bin 0 -> 2570 bytes ...oidApplicationPlugin$apply$1$2$1$2$2.class | Bin 0 -> 2253 bytes ...droidApplicationPlugin$apply$1$2$1$2.class | Bin 0 -> 2253 bytes .../AndroidApplicationPlugin$apply$1$2.class | Bin 0 -> 3049 bytes ...$apply$lambda$1$$inlined$configure$1.class | Bin 0 -> 1547 bytes ...nlined$sam$i$org_gradle_api_Action$0.class | Bin 0 -> 1104 bytes .../main/AndroidApplicationPlugin.class | Bin 0 -> 3652 bytes .../main/AndroidApplicationPluginKt.class | Bin 0 -> 2755 bytes ...$apply$lambda$0$$inlined$getByType$1.class | Bin 0 -> 1537 bytes .../main/AndroidLibraryComposePlugin.class | Bin 0 -> 3413 bytes ...AndroidLibraryPlugin$apply$1$2$1$1$1.class | Bin 0 -> 2123 bytes .../AndroidLibraryPlugin$apply$1$2$1$1.class | Bin 0 -> 2099 bytes .../main/AndroidLibraryPlugin$apply$1$2.class | Bin 0 -> 2657 bytes ...$apply$lambda$1$$inlined$configure$1.class | Bin 0 -> 1530 bytes ...nlined$sam$i$org_gradle_api_Action$0.class | Bin 0 -> 1096 bytes .../kotlin/main/AndroidLibraryPlugin.class | Bin 0 -> 3576 bytes .../classes/kotlin/main/AppVersion.class | Bin 0 -> 824 bytes .../main/META-INF/dependencies.kotlin_module | Bin 0 -> 113 bytes ...eAndroidCompose$$inlined$getByType$1.class | Bin 0 -> 1647 bytes ...omposeKt$configureAndroidCompose$1$1.class | Bin 0 -> 3435 bytes ...omposeKt$configureAndroidCompose$2$1.class | Bin 0 -> 1957 bytes ...dComposeKt$configureAndroidCompose$2.class | Bin 0 -> 1945 bytes .../com/stslex93/notes/AndroidComposeKt.class | Bin 0 -> 5039 bytes .../KotlinAndroidKt$configureKotlin$1$1.class | Bin 0 -> 4042 bytes .../KotlinAndroidKt$configureKotlin$1.class | Bin 0 -> 1793 bytes ...reKotlinAndroid$$inlined$getByType$1.class | Bin 0 -> 1641 bytes ...AndroidKt$configureKotlinAndroid$1$1.class | Bin 0 -> 2354 bytes ...AndroidKt$configureKotlinAndroid$1$2.class | Bin 0 -> 2000 bytes ...inAndroidKt$configureKotlinAndroid$2.class | Bin 0 -> 3199 bytes .../com/stslex93/notes/KotlinAndroidKt.class | Bin 0 -> 5032 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.values.at | Bin 0 -> 4207 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 0 -> 32768 bytes .../inputs/source-to-output.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/class-attributes.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/class-attributes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.values.at | Bin 0 -> 64 bytes .../jvm/kotlin/class-attributes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/class-attributes.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/class-fq-name-to-source.tab.len | Bin 0 -> 8 bytes .../class-fq-name-to-source.tab.values.at | Bin 0 -> 406 bytes .../jvm/kotlin/class-fq-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/class-fq-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/constants.tab.values.at | Bin 0 -> 129 bytes .../caches-jvm/jvm/kotlin/constants.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/constants.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/internal-name-to-source.tab.len | Bin 0 -> 8 bytes .../internal-name-to-source.tab.values.at | Bin 0 -> 2541 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/package-parts.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/package-parts.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/package-parts.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/package-parts.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/package-parts.tab.values.at | Bin 0 -> 58 bytes .../caches-jvm/jvm/kotlin/package-parts.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/package-parts.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab | Bin 0 -> 4096 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 0 -> 1774 bytes .../caches-jvm/jvm/kotlin/proto.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab | Bin 0 -> 4096 bytes .../kotlin/source-to-classes.tab.keystream | Bin 0 -> 4096 bytes .../source-to-classes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 0 -> 8 bytes .../kotlin/source-to-classes.tab.values.at | Bin 0 -> 1740 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 0 -> 157 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 0 -> 145 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/supertypes.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/counters.tab | 2 ++ .../caches-jvm/lookups/file-to-id.tab | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 0 -> 8 bytes .../lookups/file-to-id.tab.values.at | Bin 0 -> 91 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 0 -> 8 bytes .../lookups/id-to-file.tab.values.at | Bin 0 -> 569 bytes .../caches-jvm/lookups/id-to-file.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/lookups.tab | Bin 0 -> 8192 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 0 -> 8192 bytes .../lookups/lookups.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 0 -> 5847 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 0 -> 8 bytes .../compileKotlin/cacheable/last-build.bin | Bin 0 -> 18 bytes .../local-state/build-history.bin | Bin 0 -> 31 bytes .../build/kotlin/dependenciesjar-classes.txt | 1 + .../dependencies/build/libs/dependencies.jar | Bin 0 -> 45935 bytes ...tes.android.application.compose.properties | 1 + .../notes.android.application.properties | 1 + .../notes.android.library.compose.properties | 1 + .../notes.android.library.properties | 1 + ...tes.android.application.compose.properties | 1 + .../notes.android.application.properties | 1 + .../notes.android.library.compose.properties | 1 + .../notes.android.library.properties | 1 + .../dependencies/build/tmp/jar/MANIFEST.MF | 2 ++ .../core/database/database/Converters.kt | 10 +++---- .../notes/core/database/label/LabelDao.kt | 5 +++- .../notes/core/database/note/NoteEntity.kt | 2 +- .../core/label/repository/LabelRepository.kt | 4 ++- .../label/repository/LabelRepositoryImpl.kt | 20 +++++++------ .../notes/core/notes/model/NoteDataMapper.kt | 5 ++-- .../notes/core/notes/model/NoteDataModel.kt | 1 + feature/home/build.gradle.kts | 1 + .../notes/feature/home/di/HomeComponent.kt | 11 +++++-- .../feature/home/di/HomeComponentBuilder.kt | 4 ++- .../notes/feature/home/di/HomeDependencies.kt | 3 ++ .../home/domain/interactor/HomeInteractor.kt | 2 +- .../domain/interactor/HomeInteractorImpl.kt | 27 +++++++++++++----- .../feature/home/domain/model/LabelDomain.kt | 7 +++++ .../feature/home/domain/model/NoteDomain.kt | 1 + .../home/domain/model/NoteDomainMapper.kt | 10 ++++++- .../notes/feature/home/ui/HomeScreen.kt | 4 ++- .../notes/feature/home/ui/model/Label.kt | 11 +++++++ .../notes/feature/home/ui/model/Note.kt | 2 ++ .../notes/feature/home/ui/model/NoteMapper.kt | 18 ++++++++++++ .../feature/home/ui/store/HomeStoreImpl.kt | 7 +++-- 160 files changed, 134 insertions(+), 34 deletions(-) create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationComposePlugin$apply$lambda$0$$inlined$getByType$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationComposePlugin.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$1$$inlined$configure$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPluginKt.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryComposePlugin$apply$lambda$0$$inlined$getByType$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryComposePlugin.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$1$2$1$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$1$2$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$1$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$lambda$1$$inlined$configure$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$inlined$sam$i$org_gradle_api_Action$0.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/AppVersion.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/META-INF/dependencies.kotlin_module create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$$inlined$getByType$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlin$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlin$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$$inlined$getByType$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$1.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$2.class create mode 100644 build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt.class create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/cacheable/last-build.bin create mode 100644 build-logic/dependencies/build/kotlin/compileKotlin/local-state/build-history.bin create mode 100644 build-logic/dependencies/build/kotlin/dependenciesjar-classes.txt create mode 100644 build-logic/dependencies/build/libs/dependencies.jar create mode 100644 build-logic/dependencies/build/pluginDescriptors/notes.android.application.compose.properties create mode 100644 build-logic/dependencies/build/pluginDescriptors/notes.android.application.properties create mode 100644 build-logic/dependencies/build/pluginDescriptors/notes.android.library.compose.properties create mode 100644 build-logic/dependencies/build/pluginDescriptors/notes.android.library.properties create mode 100644 build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.compose.properties create mode 100644 build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.properties create mode 100644 build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.compose.properties create mode 100644 build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.properties create mode 100644 build-logic/dependencies/build/tmp/jar/MANIFEST.MF create mode 100644 feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/LabelDomain.kt create mode 100644 feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Label.kt diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationComposePlugin$apply$lambda$0$$inlined$getByType$1.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationComposePlugin$apply$lambda$0$$inlined$getByType$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2fd104511ee7f3ccacf439cffeae17b506221186 GIT binary patch literal 1567 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 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$1.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0833dc9a805927c0d8dda44bd6dc568beee39315 GIT binary patch literal 2570 zcmb7FTUQ%Z6#mW-n2-!51*w$UR!fAC00YIA+R$3AHX2fFDAl6Ylgtnfnasqwus~n> zTlx#M%Nwqxi{+y~%H=*u2%!}W4|C>R_WAbh+xz_e&+mT%xCfshF>f2LBaHcK)e=SS z3&&owf|9V~oObr()A5`2PX%N6K3jHtOW69(ZbcWiZ@Ms@nbNLH$03$3_0(L7yQXDwk5GoQj$6`qOuyiA zK?&rx?f5lfczVw9bAe^0!x%Uj?j{#9w(rs{QS?*{G7J>A&0@K6ZH>FUViIW>Mibc` zzRPus+a>)`VaF``>6V?m1SwI(H4NcO1efs+!{qt+qv9Gv%rpH}%J|m)vds&YX~>vA zleq8Vy(q5Z2Fbi`iHbPG)vD{10`3|U4a!b9RbN!ZcjlzO=Z7)Uu0c%#sYozfDw+P0 zxy1v^Uu!5>5f+90Mr%Zl{I7>ZIJ%TcYe*s$#TdpJ`kLmsfn|D=vMosTy9uqt#EUcOk>HZ5KHQ~ zB<$0|bji{Wa7$Wxn?Y?bD~vk~W0G5KVW_yv&`p*s>`O%qBc}(bl|>rna4(89sK%3L zF{XUNMHLU~Y&o&Zpr73)PJ+}3yMRR*$0f=Ik#ET?1f`Oso`#h=%tAqZWrF(}n(qSu=YAzmEa zSv7rbaGz82Q7XF~^p-F=gyjGRR+f_vI@}X-HbpaoK;wrmw8-I$h!RsG%Ai8i*x`#I zWr`)0Ddl10ua{j)Sl%*-gV8x|JNACX2|P+9fsVA-5mgkaFcatCs%!@RkQMm<8dQ`R zuAC+}S*8aywCETF)|YjP+}hx-khx!%1M!Ojx9u3sK1g-do27!u1(ky7HiY7j1DhI+ znXz|;C+J>NeEzr-GiVu`Ds9o?o+sMs`C%LzdGKL{0TjMqX(E! zkRK2A>G|;k%qV!8k_QKvr5JyBfR7X$V*UWjbdl~qR3Ob!P@!>ztnR`s^x!rwU>3u; zLwmCrrS$~vQaz@zO6}s<^jy>Q90rgfw`{^uiPGd7j{Fz^V)Nw3C$ug7ctHAOOtfU` z5Z8Y}_7xugK Cu(fUg literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$2.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6b3c6d6ae2c1276828b18e429c21305c675ead4f GIT binary patch literal 2253 zcmb7GTUQ%Z6#mW-G9ejC3Zj&1t8Ii_EE7O&HAo3JJDR3gC~8sb$;>nyGMQn`Oju?4 z!f){xsLQJO;9~jck8-)sB!r-CO&{i5_xbki+dKK|@8ACb@DWUgY}vJZPgv#seMgu) z6rQ``wCcjma5_26%x31IZ%zec_^#6MLPxmz-a%6rZfN^1ck~Kx)+}D?y?fkpO^Frg z>z&o?LdEo&I&Z7fYc1heI^P$%6*zj2_GNjob+~VL@gBG$EG?E8CZDfdMU3G}&;2tD zP!VT{F9?ELWSGzPXV2P`&~^iIrIg!d7|DdYB6wta?qgAJ`8GrGWnnZVks5*mjUkpb za@!gbxRAskM(9AoGvq7%riH>17w&=AAXEBv=`6(3rBvin#Ysf=hyW;JFNL! zQ2My*dSOJ1K(BgXwdFXa1jf$?yUPT_4Sjkg%s|Bi!??L?n~l!14es-%O_X7n&Q|vL z0oNVw*7bX}J=+XRJtvzIq)zeHFp0}aT*B)NGkvkAn=KVr7%tZBa8uM>LR*P4Mxnit z%|$NOeQr5+#K0=qWvzNma=2{_35T??{gQ?^@m2~~agAXx3Q+3A> zYK~P%*=h4*nG?2K~hqa$a$i zts-Vq&@sm_OmM4`QFUH($m>}4p-ktycuxwv-*?$`jU=9*i(Ds6xo1Ug46h`qzCI*w zcRGS>Au1La5=M1%t6W`KBNI>iRn%WJEaLVM^~5CxWq+1o^uNeNsM9xh?T}kMsj4iKm|Ecp-QW^nl;<+2xacK+)y-a!#xmzpvPVD z@>w@x&o2feCDOW{E5Jk7$h1=>vRAD}^L^ yG=G5_%{K{Sl~C4pFkoQaz{dvez%cL$J~dFm-5sz1RovS_EWk#9&jQ>EF!m2nomy}J literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$2$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..55fd452ce68197d6754f3a4e8d2a5fb14b13fccb GIT binary patch literal 2253 zcmbVN?^7E^7=HFba^W~inp&h(5ov5gP%c0%+E8qof;~-BEEKJL(9PX799;I8y9-mk z@wfQNkLsxP$Be`H(Lc)Z-ODw^89D|(-0r*Y?mqjxKku)^ast6Uqt4q+n^*exo^^yJ zkwRlVkrr0!e$X;n0k=KJ;0LbJ;BCjg@3*-t9yRwIE2{Y-qJOEP zzF~)+(MR*1+}Juga4M_4$Dar{q9w!RtC^}8VwmdNKZC7`3`1tcCAd|FrQ%?W)}BX> z2+8is>^8$#A=-7ruPk3Yb6cIjVJM#$Mu&!xVJOfUhKlCwwvH?=Xh>s>6cV1HSRX8c z3pX0*+2%mIUE_PQT4!4XdnRYE^x#vX9fD$95ln{Otr)X$2 z{HW3Kyh;}1|BhxaFHI2zbj!6u6;~K8Tf2_6pIqDE0i_=$FvE>veUBeIgG@8J3f3b--2LDUCkHI$?+Y1?UbS~}kCg1pBtcaEf@#&d?>XZswVgo0sq z;Kre1LB}P$rcuQ#F^nWNE}Mdi_ZhNgV{@z8sI4)KzHC=<$I!8i4~B6IA2KKh3k>y+~H9aN&!iw%-Y<6%qV^UF5VqGR*vUzN)B8 z-wiWdebwRl{fN3w&9^BR^L5|i-Zl?h-t?R;IZz3cV|IPJS6o!WV|D82jZVAi1j(V{ zO}8a@6gR}eI}Lm=(kYwco@pIFt#Qv&kw0AyYDe*n|>#- zoOM^SxRQWwcOm*rID?<&}&@dA;|;3lT%mwgM>J}%2WF3ZHuAf8+Ct;={qvr4&$*GWhS zjsv+W5iFBh8he-UB|*JJk1qaz1MV9utNK3Y}1(;GWa3Q zz(kBE=jmi!O6JdLmZusC!xX+CjejqZJj20`3ERo&8HcA$;RBg=>?M)%20LdNf?;pbaBtl0jCv!`_)rB3A5=LG)gwe3__Of8;>-fK% zN$ib2_HfF!7K}{JAv?!?2bP34?{I@+!Y#}8{3yG6!uAq5(;TctOC^J)@Ww6ApIz!?(nRjJYYE4F|ow+TsOIu(WmBpD$7=q(nyBL)o>7pf@sHKhR&T+ zV${xNZL5?GDvnZ`N_E$BO|g2WPbVLQtB?B$S>$-!Q}HZAOUd^NDZ|)~LEnYwN09g~ z97i~aV|b3Ci7>^sF~xjLwK&NTlUVnj?J7DMG*@^D;?rH>DGFP2IiqF#MRBSg5p*$x zGQztk7I@C|M*VOzL_0cn@ufm}P=k(cX{v{zcTadL_N(Y42!y$;eB)^i&r5v$7+~1{ zFe507L`FC&USLr3+{}ro1&S0^O<9r@l?d2b3;M)5~(lWAtTKoyUvv z)C&yz2-2)@WD^;+(?Y{YK{QH5*%Rv-sKuoUB}uu4mkOvaGn{yG#ZpJ?QSq{@_qrg) zF(C~a8H-Z95D2RL;~h`vh<+v|FeM`}z1L%@5nqwVHV2W!40S5Mlg_NI2v@^w!Pu*X z%ove9c1&=OngHS1Ju@nlDFD}TL*km-Yi3mJSMhp9@JDRh6x>pAO9t>pdB}?*Kjb`! zH!xp}jUjH27*?7XeI)4HJ7mz)5cRkT%B1eF5$548|Gw(lO8^;IoUVaFvn+JnTe;qT z)4$B*tec^Kmr^QA`iiQcX5PKGZKdW$TTYaxb+LPv(^Op2a6m?0fyGc?yzb=vsA7eo zHl9e%3@1h@yBoGs&%Zo1IB@ImCOigZg^InYtcHq~DPG%qCWXh-+~WjG$>yu*BZ0|B zt$cuJTb7e560RC@Mm#BLG8*1m*MeK?K_#RFl~#qOp{@0HrJF^RZsl_D?;mTFTDdFT zOW23FWm{`mJLl3}Oh#LG3Ym(J8LIuTYWNg&6tbOEW6R`UK$g7p&`xo4mOBQYH^q#6 zP*IR)i*~wnX;D!$P8gO*344bd$;vw;)QrjAX-6ht>c!J3qk#HlUxpAA$ERJR4B^t6Ju zK;V`b@C=8{iR9IE2D6UW^+dHi-9@8I1y*74pPn2Y!E!5jiEK6LSs3)97c F{{UH%IpqKV literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$1$$inlined$configure$1.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$1$$inlined$configure$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ff622fbd43cb907100303f2288d6c6c870827fcf GIT binary patch literal 1547 zcmd5+O;Zy=5Ph==Nm%)ifC>VFvMPj+Wzi}>K&mK&suTfHC@!2P*(D5YW>dSf6x?$1 zw|MoW<-tmE^ha6tZbHNuy?F7kGd;aM-97KUnQz~}dVr7lz9#MVlLzVF>98>DWfelSiT)`i^0x!5H2aJily~eQvvs$*aQjog>#N zDRcj#>byBxDU`g5$s1M7VklfYjdULk4C8-InMRV~>9vqkPf>4X zl(Lm)-IIz_!+y&XY^gL-4Bf30FzigXcVCT9A9P5xTxixgIjfjQp)5sU1?FbcvX*BK zdXPakLuy4xp;j3Z(~<86dUSN5mm#T+MZmCH_!ra(pMk4ZwjIT7t~mL$%2|R~Wzmp{ z1~9Nw@}G-nwMdq2G34sCUcFw^wP8)yGFpz+YZ-mGUR%m!lUeO~y|&0MKcuwFST zV~N4)jC6zE>*yLPX564E6Ya46Dhg^>Z-6;Zq%rJvF40Qfk<4pKY>D${2g84YIE_h$ zu2|g+qrdUL>w71p-k8h>m|_@gKj^}#A{eh2h{PbIa(u~MbI%L?lJnXrhUHf8bk?pj z?uHJ-`@QY8UA;p-eJfV5p4*$evNrYENo%rGY-g<6BeztG4n0@Utto46>BUP+&u!?W z!*$Q5e)wPIFi86Z$@qp&>_ODt3-xmh32$0??0}G^a5~qfS1JW?%&KG$wH$ z1{TQDkf5Z|{1A&Y|0m250KhZqdVo%nJwzgp!90fYxP{wf;!YmJ7&!zBa2KP8NCp@S WFdpDufC((o=04i|h`z^h(DV;lAHl8w literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class new file mode 100644 index 0000000000000000000000000000000000000000..552cde92475fc02511baff6e3806cc8c5eea4d5b GIT binary patch literal 1104 zcmbtTT~8B16g{&oY$>ahA}W3WLWO=P3tEjymDmtS8Y>bp^}z=+?2cvVcDC7_HvBA2 zG=4nz1N>3OJG3;2O?>cS@7#O$+%xx{z5Dam_a6YB;W5KzRrygU{c5KZNRMk7s=c7w zlqx4xAeHcQF>mK&E{vK7&4~MfIN%+5Q1uKlw{C+mWR7`{y8%~C_toLC@U)Et!z`7! z{Suc-+a9;IMk$( zR4S=A8J6?^0v8%7%rMLkIy0P7X%Q(NxHY9CNm_WZjq9YEcO<;lZm4&=L9oXo-WCL8 zSk2cjs$4mj**7H3N}=K425zP?hg%GZyoqNqpGFc34rXv=0v7HtB=wPu8J^ew@9UEa zwm1=9R}1QVM2CgOpHq)e(#9%jDOE3Q5y{FZl5=zR_p9QdfZ`!6V5J1M$Wf+F4qUqtG8JOlmkaMT@u<@HiF}PHihM2xF494`oR2huz2% zJJJx$z3wV4+oB<3NsLvcLVf!C#F-5eIY}!v4wlIp)oHyfif3_^PM4x5bXs&~O4(~) zal7~hi^bAsEPbRL!#Y`mr1w}xj!xql9)=C_#~203Oye$AC}jxC145_x2}`AKxM$(* zMKWhd=HNcos4|HMRGTKxTn5^jhh&qOAX}!#f{jOX&J!Yy1Sa1hQ6rsjsfNp#s!>*otbaMU9LC*9T5Xi*p9}VwFFzx7X#Z|-wE>c&bmgIz=%BtlEu2ozqSXRN%5_xUc zwJgI)>^P+e1_aJ9-uXROW2P;W1u)t;*c#iMWx7OEvl;OahGoPf0*Y2s6G4Jiaul)o zy^^gt(#D!#t__z)!TiZ0)tI4M?OWNbjFm4OX zG_+LJ?5M@KE-~NmyL*G(y)o;#9UlvW-Pk{nIno2C#N<_Q1fMCmi`kPM?kfvpPGGRk z<7#c4L@$haftFg>0+T2D`gph}CX{d1^X+pyXvG2+SwW0djgP+2-L27vsi{Is`~_tO z<8u7?fNzx3H+*y?l{)@8CUEWVHKRZ)9odY#9#R7B-q(?6W4_JWPF&v=7;dEeWcoM| zTT~xJDcScS1gZQVWQL=-aZY%+)cd(oITh+gM&)Rc^RHd@PXOxzv6CZH;9S-JCCydy zs;e@-Kyf$7<4nj`M7}_{cDTQ%%P)cv$P>YZgI8Tjpeu0rL`X;ZL;_t0uhNlNQ!FqR z7!&uJ-~AK{M1v2b(WaijSaUiQ4RH-T=zRBcC@i(5Ij&BG<_%lAL+fpMt)!WG&CKZ< zr&VvG0!!@h02-=>bnIYRwaRu*yRT)-g&L^xaNCuGNr)d;mu6R#_vlp~d8d^!wAxpt z7L?(>RNwn#8vRGXbYIPlx$0o8?Ql@L%8`z)Oo_Z>Bx^jUNIi0?c)ZV_QZ>f+D68kB zf}xC(>Q9YKPE4hg)c8bydTR0}iJOv`RMNNl$EPN59cIBxs50~~QbB|1vHp}a#n+iXRNbeqq>^$fo_ z?r@e$C@jXPG{QZ1I2L=2uHmKN%*Y#D5}0ZVPBeEn#rodhlK@CuuM&eE0g!K0U_F+6 zjr3ILEpDuj>|^2pw|vo1a3cH`Q|tSfKER!~xVzrnw2ylSxc>$Zy>W5q>kRz~(Km&j zb&$S%PAgzo=YByV>Ay;+181Zj@oeZxxo_Bn!!_-+v!i})TYNn{sUy?Ns7K*Q#9 hL>!!PP;l_fL5qWS2U`xJ4s`5MQ9Bjw@G(4r;$Jlh0%HIG literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPluginKt.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidApplicationPluginKt.class new file mode 100644 index 0000000000000000000000000000000000000000..b0996f6218567615b01163a926612b1199f454cf GIT binary patch literal 2755 zcmai0ZBtW66n-`#xgiFOQPDsZs;Q!YLF!8dtzwj#8UpfW5vyI2H7vQgH@$a*&{z64 z)1T1(g7%~12XSPkGX2LkINsFPS%GDCX$((7G(#t|ET3i}-nj40xTts#{ zZ>oGv*GD4I7><`srAs5dyi!R^LkY{^dOB-3+u5>UYuLwdxUeJ&Wq;Wuw|GU6Bg1JQ zZ&OBlVV;Yj4ee3Hus?zbL##PT4GD(uRcT1|A;JEC1}NGg9FF23I%uJ^J?etJXCB0G z6iH{IlcBpobyn9!iR;spzPP(X z=D0445u9L1HFl83idhzE?~F30K}SEv3(B?>U z#)Voki+8wD)P4*evWy_UF#cP@%!NRw2bxTo8;gyCT0$Yz!-^C@4{g@#LX{O-iA1sXnJ zAYHkbhoiUxCq&r?aE>mXk063;3`sWxLC6}_nj+YOSEd9n3QNOv(m;LMk!zEShEawC zyHxLOnTg^iZq-rmjI3ddQ2SR`iB*-(EOE;giZ1LOhS2QH*keN9=`m^0;(|9{_oEa3 z78Vh*XiU;_V6z5M+w%bUY%KMnE zZ^3~!CaJjTYYcsj{kJ`v@7T6FTwENBQGA91!}XL*@zg-g76WfD^{KZhHFchWWvOV9 zHb@r?UE9iUqTMHiA=*$FLx<ByS3gC-CB#*q|d znv;ge*D8y`@-2y+llvUEq~qZmyQXS}k`=mSE7F!^A8ma4sA}(?-Ts{IaEp6Yczcqn zOmy0;Sq0LNgC*&QncHKF_)Yp2+sfiqFNlrv2%yCwo!TTq2-E0G8vRVI%lz3y^d;hb zi39ZB#KHNqeH%D3-v0t!zarHCY!k=kY4GkV3;-J#d`)YE_=?^Uuz%34(KqUA8YL)R z4CClPo+|7Fx^WNRkiCbzJJ3luh6n+jG&Jfte}fd^eLA0SsUN1cmD+WB+5-N-Gkr&< z)&Q+?b_C^c0T;a-*fq+>u`4f!OoIlAee=bg_%VapJxe(orOYe0nEk;ruD#ap{P+T}ovP&4)%%*lHDY)h2 zZ}I9$%Y&8T=#R4OO+rLSaq;3|XL@>jdb;0x{qxuN9{}Fq8N=J0w0%$5mMHk#KU?$4 z6)$jh+-gZkgI6l98>DWfeQSZ+7&MJgYiqLsT7!fFWo7Bg%xypw(`3%Te6sijz+(*CIqD3ztN= zfPtNm|5SvhC9>=cL%LD#(;IbN8`X3zp`}@)p3p}d_2tA+bVz&Is4ube&oS-%TPzaZ zSZ2s{N4G`iWke0tWZ0lrrmjNyw+N_Qz16`25yi06{fSQUt^{6EUPp|7Dj2^33qhV(tcG{f-KUKdXkA$dW4QUc)=ylkmVJ*yU%?Qp4-l3UefrixjYCQ((u5#EV^DGWQhcL zVxyP_nys``{cZ(*<@!gM3u0AU#WSd~hYoqZ7qdL}2Or?{e-r|jeHe|cHE_7@pw zG)`@KhtowepQWQ2%ANL}^jGwMAwxr&)>zXyfjP3nPzt~RZqpveJgqwUG}?hNEYKRo zLl{^jOGAW`hWleI(f*$>M*sjXsOmxLWat2qJcjca$>R?0l8JkHjAHBnEWmw?A0QfF YBEV#T2LYzAOqcuV@)P==HiKq<1MV2S`~Uy| literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryComposePlugin.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryComposePlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..30cb1f2a6ac0b684e1f118357b20982305f3c707 GIT binary patch literal 3413 zcmeHJ$x<6v6g^Ku0}aM9wwW9p669DCLrdThFb-g_WyD}0Bo0ZOmeh!bR=29VMPQeo z$PZ+dZ8ou;RHY~{^DFs>R8F^qB*frUWs^lp_4-Zs-Fxo2_uZ#I{`&QI0FO`-xG`ho zEmO;9w5+9AhjV7JWZLSgUM^@x2tr^kv#abYvaT2fc_q86=A6llX%*yxrQ~&0R!W*& zk)ArWY?+?;^rS$fSxE>j0@u$}6hcrSIHehyGcDkc#W&j#MyrGXB!L!ZN3#X`GZz4- z!GKaK>4)?$b{?$wCapM%RZty)K~HK|b;yEd*s@|6rlUBT$?>x3ESGhCGK`48%{|l6 zHACLrFUp$XsFtDVa@ue#p3-u52v_M=Zb!}SRgbMImQqwHC~!M=2A6eW)?FoqN!Q)$ z=#p>^-2z?B6jewKp_il*dWHKX#ZU^aiC8S&>~G17rCp6uRdTW&H}F9l`p_?MHD?w_ zl}a9r>Xk$Y<3oXHlkqcEh42wwZgj1|kq!*D;bTMvE)neffuoWpk}5EAKGK@loM|`= zhiVb-C%EmxjR{Cb64jMrHm^jJ z(WquH%4$AJ)U$^hhb1+d3PF~TbaSx3i5E-V)_E~xS8ioHgfW45lgKf3r+o|IjzDY8 zj==b-ls&0`GJZOZ+Hnu}+i({Tm@+k8F~J9a~oq9*)brLaHrSS*N&LSr(lTJ{9QBnZ~wO zC|l~uZGnYT-mg~cNai17@$S$p<|NGEi9lOai*83NTnLD?K!>+d<4K@1>Xwy;Xlwfd zL+4$kn$z_J6&R&XB|7q*=Io5TKhsi-xq6((0>c+L*BlsDx4sHoFKJ(u$L>_})*U4U zdYWM$6WDZ3tJU1CHyyYv!G{+l;&g5aT**|c-jeDldBsr(!B^b(^AQp5C+vPeYWKK) zpt&>R@a5^`!qN9VlCQ^CZ()ujY++x|(f4EF&X!JJ(w7vofp;m~?}UM;CcUNv%>$^vuqf*_3UvF0a^y*g3L*Uhq( zQ=h2Wa-kMx_dVHn%ZU&_tS`;1N*Ak^7QHt@N~{kYj~1k%fz-fzj$N?L<6{FgJhil| zt=RNPYA89?c)9nwCUeHAMTd&V2P$=|CU}9eW=SeYWTez!YB+UwA|<6#$-%LS)IDkJ z!Ql8r>VBO9k5DP`uX%8-(VT0e($mJg`?p}u%&P*IGpyRnA6Vx5j+w7*GOJqGwSu8IEL?nuD!Hfc+)TSnqI|O5DSLvJbOgAL{IUgPx%!|Mc)%+$2u}Z*j{9PT~SDJBQw2bfU$7 zFVM?R@HZr1zDDW@<8SfM$L&dOAK}qNXt+0YgvW0%57eQIqK$A`A@SGEaSRcR;0o@u zpXK~1fvpnS3(Bk!oC|r4utq4qz}+BE^x+vt0o+1A(s+&*?mfjKo1aZW22127%)Mo- zkOI0?b=Mt5xF(=+m8F9PjDuaa0AmV7W@vMj%Pt|0c-B4Lnix7l-!E9JyV1yKS4F61 zqLqr)sUmKwFP10YkaeXu#HPLUfEc&(Q2c^#>oALV#9Z$^PyCv*4p>~o$y`<#K1+Ui-IwHRoHiYTS#N?pk@f^Tdw4`QQ)<*$#dO%JAthD!jYb_ z)*8((6e>>5;7wOXIS{sK@VYQej}V%kAE?F6qq^0>dLo6NTg)+xp6@t{FvED){u$1r zh%iJJ1i>vb%ub!brRs9iw%Sxy4}D8|bc5XV7Q;Zw-xc2TiX(SKHE=D4%>O{p5l3Gy zH0TWBsr>YojuG-_)Y(>W}2DY7xVd$U1?Yw$k`YxRk6)%brhM~%?RoQPH+u$y* zStJjJ$*IB~Kj4PVWz~38-m@xxu4|>FK&ljE9izAs$7Q_9kbZroL@~~g@GO6w-gf6` zRr0cJnJUiD6y{sF)`zQ@Ae(=)h$6)>R(G9hz+H2uCCnM8?u(lE+M4wb{TOaCOrIum zj#Q$UVz^Yb{1t152e!Y_!d??LMSG$<5bbL>BOx3^+2nMjk%?m(S%zeXnH$)aH%rqP zX6X^z>*@pvXL4%0E1azWPoG}WF^72-i(3rYGsJtYa!8xq%wOeU5O2gu=I=1{wbD`L zZxrt`#PY?`=2CHam2S{36piH8@ji0Bcn=EsqhaFYcvPEXX>Cq>82|m7h!#_) zOo~q50+)_FsyTs2wSqt={yR0JC^pK9N~o4PR6vWA1?GxVqx5RVZP}4NO)R&e_(5z? za=jWoipLDYXW7i|`=s+_$0Ttj3r>aGTig{&|C_2I$y2a)9kY{+q?UmKIWGpavgNjn zQjY^kinsFeKzM@Ab*p5f3+w{TETM|{t{YG(&mz=<@ zSWVquZaLU$!gryPA~h<44D{cUNT?#I-j2Q)RJD9UqubPL)c2(`KcYV!{t1ciXv(lf z?WN`xE+R=YGHO6DJf(3DLp%Z6B25ye!a5{h3O$=i4*!g?Oz0)9YsmEciW}?MQ2Gb- zCnsNErj!jQjZ*d{Zfkg|oN4%!+HqnT!3g@PL|vd-bq!aLqW%WWGZ^b4l}Pa7O5!BOXtNsv5=+GHZCY0B?vo#NQ$3wI!POVI`#tV`OY^4p2w4HcU0(E#7afcE zfcAUvjBG~fjwR|rTpzW1g{$V<)P`yG6MRl1jV!-t^qcsS`n!a2pHP;z5z6C19?N;G fU^S05e3-{W5{xHOZ)(j@KoWby>>{Syq;=5-Jk9iM{l;&UIuv z)%vZ!1@Qv_!G=IW5g++ch;yAZ3nF9f2jBPeoVVv3`LDl!`vbtI*kQP~A#L9ic2zWd z?jLWv-IkD9-s!l<*As@O|~r3tb`2gQK=7Wa#*kyJnTQ8#XVE-aYNgW+*%v zm|KHYv0U~1mf7;T?K&p!2(!l9j(y*2b0Hr!4xDCK@nlFF$1hi#Ufbk-o6JU6xOOCA z2c)cT;yrb^bKG%C>qEs)qzGxtF#l>Rb;KDKNAAa1sw2UWC<}sHXINPtW6i*gfiauU zLPrMVZYj6RFp~}UMeuFYlTSsf>pKjEb0DN(U}_Q?QVj8BE4Q0M5^orozziKIWQJ_@ z_4%SOB!oQj4oN?`aOT)YE_`zifpaEHMJOFbC>teK<&a#u9$9$cghW6=wBb^EA@5VD z=7qJc>z0z3{dew$476nElay!%I<7EWYVJGD!-3c~_lamkRfe0()dPOSO_$4-+2>qo zg3-ojM_^H`u*zdqEeINnxinl!M4cNlX2rSB^UqvJY*?mMo-14>lw9C07g zUe)3l7Ds-(iyH>AxT!dJb_y`u7!#@7NT>$EBUjIis-uv?MZ9Scx8Gx!8q}aFS{)`s z(yG;WHfohkhUwE*5><2xMXXI?6}K6*PLUxq&X5bIG7p`Q+dSk{09yMfMlFu1A*lv1 zutT+o(d9FtR;#qK33R1*k~VrLhL+Y0ZLa^(QSW44TV?rVCZ5q&W2@Q&6vm4vGh|T}cE*)DcW|It;$30v*45=qnJe#PKsd`QB z?s8x7hU@I8feMX+vG3W#5}-nxsZxinb=wWcA3U0@i-tS+ODHR@3_y4LkRwQxRE;_tl>k^e ztva8|4SiHgbn^wRZquyMJe4o}g6Vwx1=2s#mf=epXZu&UfDG;EQ3SzIrS$|^kp^86 z=Mayuo{%nuwNS{+{ffo>&zLU!j-{{F;svhtpg+g5Lf7z+M#a|3Le`#ss}mUcK}! zHPn{E2l$ZgC$LR#<|#~{(+tc-cxql6?7yNpPPY#Rmc{UxPBd7k(|m_8J|dKl_Ykx2 miG@2BN+?_OC$MheGu+(+3$THEdzc7N32;9^F2H7hi~j(uFDvQ* literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$1$2.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..9b24d384a7f4ac03c989a7cc2fd2311191db3e47 GIT binary patch literal 2657 zcmbVOYj+bx7=C7(bkh)Qh)`OJfDj=~NVXR)LJCp~wV`RKq*SpgPLgT5&1SdmCA8`X zev7{VJsLQA^z``AALa3#%{GM76pnt#%0C{_9uW__<`ZfoLRFiy;jsK zHn(?I46m-6Nxr>p>?Ws@(<&H4tJttyLpQapR#VeWSJ);uv?6a-YCPY2w&9soSGP<@ zTL@NDv&E{_)Og2&bM`K#kRIY)y+?=F+`K@rtUm>s=J#EqlZbx5XF%pD2OqH zQiX}N7$SHliZF(0Lt0=sS9~+1l-E$w7FD6QgiZ13X3J^_hFt1DKqW&S_CroqEptP! zdp4Q4;K#isT&kr`Rp6#+xx7=6lI4~>!^lT4@;Y$cf)-5ICM~_{s2F27QQZ{PMxeIB zZQc}Ad4@}=;uddl&ERHTdr+4Ra|0-*M)mmY;ezT=ludPTu)8(@g5lIRzYI&nqoeN38bS)A;WO&74%dtQ5Uv~ zEQ8wOh9@3u5G2IPo@xX_WJAMb6gf;W%p5GnTZ2$B!w_?XyUK0KtXykISA87Gx?jb$ zD6Zf-aV5C;J2@($o3lOB6m~8s;(d9~ANpGn++a8@&68NcbX?nO3bRAqjs)?s*If_G z@|cz0ZV~3M!0GT(#YYSYB8fxh?5yn>!pUvhRs?gB-@!h$fx5@-+Ja8UGOhKVyaIyD zwB~VFI=V;veDe*b#yO?p6WJS1M6rkhwHLqht?q714;NBzX_`LumQa*MUuL+R)RR1! z^_z0`ZLS#@`5W)_hE8vJ;!R&M{BA8*lMGk?7Y`XShwB|^<_s5m3$~BrL1<$*E@4ve zh~Y@k&?Pfee8vzdl*+4frFjDV=ssxv^AN*hd@+R2vCg1u6RQ&kEz@<`*I5=WuW^@C z^HrLy0ebzI93pZ6LDrCq0Xp2#<%%#;YGgFI_be9OdlpsVN>mwDXc^yoc1oFKX=PGb zjQ;iGpc0WP=BFTe_o@URQkX)yqKl zx*)IRyulqu(sTHpSv4$&x_HM2y;o(uZgSUuW1?ltv#Ua07KX9F!CJ?Bk5x=kMZ<&w z{ey_d<+CXPre6f|{j_N{L$gBjk#y!)98HH_ApR45GB`AjbdGQg3Hl--yh}d@m)2pr zPjS!@5r=F_TWy3eNOLKZ7=4K|>0fX(vxjppaWT`z<>kwzfoq{`{QOHyxA9>%akGuv z+0Y-jb2B^^9!Pv#9t*dzkog^pk25cDe-COKB|wIwz@zaZMLkF!WjNy$N|Jo1$@?q? zx`eYR(*82e`JtyNmT^qs0aj==N-g74JoIxfb<-)4UYXKqk!_Xuhm*7javK5Sb7X&& zwqH#k5G@a^9ga z1QXlXrIkWae&^5M;(MB}lkOAJ{$?Em1@HnY1yoThKwzVQIyTqA9O&3uN610Lf#IO+ G;P}70WzYNo literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$lambda$1$$inlined$configure$1.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$apply$lambda$1$$inlined$configure$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bb00f460a232dfcef2415a51e9903cf3d1849d77 GIT binary patch literal 1530 zcmd5+O;Zy=5Ph==Nm%)i4;2I?%Bm1PmPM;XK&mK&suT-SLUG|V$u41FGn?9-rQnv6 zzs0L3Ee}?Tqd&^BH-w0|<-wDO%=Gm3boadXI^TbM{RZF-UN9`KNhk1yV~bM2gNt1+ zst9TDTFtvKJYFq1+^`HoNKZ)DG0MI?5|t=$4J!-AVB3CBF)IOgJlEtkVFvDz=a!YZ ze^GPa9j(}9ziRTU3T7!1o^u`Cs<&~jTp0>qF0U>#jQurR7HNi;H$qN*MQxc*=$Y+2 z>%LT+dJWp1a7$&8Vd!i(&#*IjyYX7{;bB6eWxG}9*ON24(CYNX@PbBh&0Na}U)xlsAyjkQKI+}uJ z82N+u-M~K~!8S>Jf(eF!+mD<(RRrNR`mqRvRBj--XYTn?P|$W4o%XY zs7S8pZ-6+x!eCRx=?0SkVHkcNNhPZ8fd~baS(DONyg5b0Nb6fsp8fF^7Bm{5magM@ zB7INM(TsIYdq?3jdOne%p+IY<=^Vv0*>NZZpci*(&tisFoqQVYz%XWMP2({P%#o!b zMM>lRDduVaPnaVBfLGLYAHAgi5UC;tiWn^79`2Kg2Sp5F_z*0_LyR0E9bz=ZScpd< S#<4(`d+72r`aN$3P5uNYrMlz* literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$inlined$sam$i$org_gradle_api_Action$0.class b/build-logic/dependencies/build/classes/kotlin/main/AndroidLibraryPlugin$inlined$sam$i$org_gradle_api_Action$0.class new file mode 100644 index 0000000000000000000000000000000000000000..d0b18ab7896434deeaa98a45e0ec7ab4b5c5ea2e GIT binary patch literal 1096 zcmbVLZBG+H5PtSrxKd6jMO1tNgbIC8u4pyJqDey_X{<=Z)DM0j%iUU*UiZk|w!wd; ziN==?{s4cJan_awv5AQvZgytwnP+F7oBQ$e+jjs@@Q~qgP5DtM{f0bJ=(eQF zNfk&X{9MdCIhhNi)_yDEejxVwvD~kDT81iDw!s)ON4&?~fUB1K;^0Vl+D3w5mP*`y ziAyDJzr@BE!@|~y7Ahu&%}{Ah*F?iiyw=tXl{3ZdP*W$a9|!IbHKOhrU7KQeD)r#(U3@dfQdM=VDkqWjX3~+|zXIZVv$KL^{49 zmDEoemh=At7n&)|Fw74+Gn`Us5h)(Hb)_RoT6nRItE8HDD7^MgsCT+Su*)Of5d>sd z%{R`gTs@Q7GbF8Qq3PfnuBS1F8w`oOiDxmNMiL7SW^ic&7H%;l^`VRzHX8r`m$~cx4RjE3L+1=nvH;C7imVCEN^n919Akwv-oyF-h8oGNkvyZsdt= zX$a3Xr1XWKK765^t-!BfDo+Hm%bEc_nv!let+klyMO-m`yT-A;+4SJ87uGDMm}q- zJDT%q$t)KPOMwuW&2DKsTGG_4Lh{M_mY(ybvbIx5791^a>Pf9+Bm?O?$JmbTi%(Ap z#OjSGXc9Qr(2#IBj+kO!+dg^dTzU-wxl^)QKz85^}Ys0JgCUBG*Xz7d7eXuinBP+1nX-P zR8v70tI5!VqAzHcR*)|G`ugkhE%_k26?iI=Q*F3_i>>I!rvhhkc5y@tkRLGv=%ctS zkf?Ls(3FBJO!;tXhZ1Q=Z!11SLf|58jnoP}5|pv(HHvEj=VcfL+b)>;NM7IZY}<54 zw%t+`eFCSL>)fuVv&zIoVEE)jYhtsuiJw^dBaWAJGmLXN&+@@yuby(;NXHWb_um~7~!YSq<> z2}9z%7M$cYp5(O|KitHq0-n6yzU-l%Z;*@Mu~B@k;vQy>pXR`rf?0w7x@fEYbR01S za{?{3lm%`dJI6;;JvNO3w|;D2;9)D~kzoMLRZ9%NG`!8>hGnV3NxX$GFUL#(@>)54 zBS1w`siWIbfomUk@B~^J#74sN5fW(kcZV{KCw!kZPQus`7(B`N@zQblwP*o=QnTlu z(BoYC$f^i*2eJ88I$8i0tg}AGrOM>58xNK1L(aK&d0s+T6^I`njRK!kV_(ocEw6bR za|;!B!o048d`0C8gle1oT|@2&L@3W-=J#KBs-e!%!4oAN;}Z>a?!Qh)<4y6(y)tX?bC0Nj<@)`q;mX)Pd!mDmAYT z_N01Fl5fPPLb|8sdbT<=Ya9+?Pd#*UE7KtFn#r0>1Fgp%4UhE%lc*;60b})&G%%1= zQ@yF7v73`AH8nQgo1PpSCvi&>6KZ;*cWiR()k}KOB%>#RA{gp%rHs2ASsh~uf zi%}YllIIP^<8RP8xDcKmdW%cEl$yfh&0S6Lp0~If0*UKYqTeR~$_)#w#*=T5o{YT1 zjn$z&jPGM2P>qDgm3Nq2-NV#A?!Lpl)vl&J+~3E8w|L}_g@ah98Bc@>sr)~OR$OAF z*BR?5BTbQ)Mhr_x;4553j%x|m@FT9kp^nS17n$RRuX_=Xk!4PCT*d+x(L@~;Psmef z;R+x5>jG_jiKp}_sbxH)oQh4#W?7dgwy=WdtRw4EshOl=&XrZAOG!bD^U_gRjD)O(B&Lym2l>K!J zJB054x%1!89lRtUvjpl}cGY(;5YFKH4AwIE0UAlHXV|ZKV(LQ2#tTGUoN`fc@!Um= Xi*^^AE@CbW?9xy>4Q=x=eTCxRhQQ&E literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/AppVersion.class b/build-logic/dependencies/build/classes/kotlin/main/AppVersion.class new file mode 100644 index 0000000000000000000000000000000000000000..ae714c1f455b9872c2600f3bfbc7707b43543ce3 GIT binary patch literal 824 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 a@fCdaK17K3uzMfr5MK-N^$;q=iT?mJ2E7dc literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2$1.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4571b3b27b0b4900bfe7cbb3e856e3c79a2c45fc GIT binary patch literal 1957 zcmbtVZBH9V5PtRywlPk5YZ4%B`Vu!Wkmi6SZ4)~rE`jEPW70s8D!z2N+nBY_d+2s; z(GQjQE&T<3k(#EJD%6ktQB`N{gP4d$Liup(*_nN2W@nyR|MTx3e*w6MO@{k^)N-}a zq1eB3(^ZiX+O4P{j%2VLwe}({)=a^V)N@&H$Ks@=uvl2gfHC|~ZAK=P%58L7u2e?E ziid8Mw{`+v>bE^_E8oaSX?Hb|7RuEquDcCkc498cka()cJP3sw=+Is3`hMJLt?zZQ z#~!~?(v+4;4AcJ~K7#><%YF7!Qph09kS|Gp?weyjSj8WNPg&EM+lvvK+_V z@|20G{?gYOyvuOj-xYo{fj#9hZwYEE!?j|y!8_ayxvIPCI}PERQlDnSI;odz=`P@6 z4(Bn+Fn`t#XE05dtP8Um3t?#}LlIZvI@N!?IMWN)Hj*eNwJGKC9^N0uC0r(uJ`FUH zB>f6w6Z{Y#S=7f2i?3BKq05^%$Z++PN+h}U7blMqjOO6rD#LK%*b+B`B16`zZERL* z%PS1$j^?Dx>O5vKH-s5nXK?lw=-z!rPRdU3vQJY-thGcPvOyLs@SP!&ZZeD=xqKoF z54hpPJ*U-4(d;w3WbFb5*0e&3jQi3`^CSfn^ZMbzXzuVJ=ZrczXR`N^>hNINnP;=< zd8grgmwJ@@`^U7Cr73fQMY>{{t4Mv{irSiHiJYH(z8{LcSoqwCfbzZfR^yhzLxzml z7k=B&yxn^9ycw>WI(cpq)^(Y@im#}cC*QssO+#a+7WT0DLiW{BU{2#9jPT9Iv%Uat4U=TrEcv;!LgA@pZAm!@p8zu7PK8%QGOU{ z8noU~hM^5vSKQDG&5+xO+OaQIX=WIvl9*e)h<$-DPb3+n2GI+SDa#t_`~ZE#B+@)4 zsX!;Fhe*#3yg>eEk{H%#&G)o8*Tsxkf+N*MtP#SY6BBde6Tf3>Ztf*MV0eiu4lLY3 zl~&8sG|CvKe<17bLJyL-BQVA&G{Y0JWr&@05U9~NNL>I%D-`e(Qri?C5Y`6F&(0m< z(r>u-3qJjc_Pt2yZla~WDEZ?kdE9_Y_AC|R=)xDfzJTFB;e7i7i@)NQO`9TPoz`(O zuXOj5$-zlHrTqYDAK`0~9IC^!?yrXp`n^j5ZWH>mZKOPW?%@j$cW~E331yG2zqAde UaUT!1F{n||_)?>wv8*xjA1=@TV*mgE literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt$configureAndroidCompose$2.class new file mode 100644 index 0000000000000000000000000000000000000000..fb01a8376093d7658eab0727b815f633bbfcedbe GIT binary patch literal 1945 zcmbtUT~8ZF6g{&x*j`L9P7@$)(>A!pK$``UHcf0uUB@(A9D|C5RPi)kPt4-=EZP|( z`o?eRKWHl@RV!7fkNr_q@2nlZLZwz%^32^k_iN6*bN>4Kw?6=^VvAwb3ww^zDiBAH zA2>49LOB)LjzYg(4SNTn5*xbUh4Q7}=||$?Nns@g#_+V^PgPec|cS z+S{sn7^E(VT z3#ODa=xW^CW0<`Zi%Wu>8yJ++2z8?$1f?``40nfF_78iGFSUpy4;)wOh$`?smBLK| z$lDWMcj&goBi<8a$S_yD0{b(Fw@r`^6`92?+_v!!rUK(l4<9ouU+U-3c{t=(%?7pYiuRah+`xnl3-b)t!4gCM?Ise!Wshc$M&DT4 z2BPr{Ne;ua>j7SFHcM+X_mgk#|3YZq=9-hv>K!JCFPK@>p7O$io%$XVtn|3+MHJ3585#awN>EIyX}RtcBBP8E@C9pjjvH9 zG%ga}{jO%nZ2KL_HL)SlO*L%Omam5%4|aIu^Hw05W?`79`%*Oey_SfEn!9GCF;;l`|S3HYDix!uIJQ@mbcDQbg5&D<$Z2q9(l{RP>4mrVRFW*pEE1PVB=l zGt9Fy$Z{??mS|W;2x%g2%$Vt+eVy88VHruQ{O82nsk|k#S`3ng@v;;qhta+IhP`Hnj(Wmd`jnO ze0F-(sW=cY_B*WaU*rBSSTeyVE$X!9hnawBVk7gL#tT}LsNmTUy#yMhu~5S%?T;wI q3VA=+MZ(2H7oWTM0*_pLiN`J#R@wzqC}VXONrg3qrwVflH~s;1TmNDJ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/AndroidComposeKt.class new file mode 100644 index 0000000000000000000000000000000000000000..459c6e5c149ca828eb447b975abebaa322ba2743 GIT binary patch literal 5039 zcmeHL`%@%W75;AXn4yQ=WhdDeE0HXdWOxn(EK7jhl_lVgJPn9$R!y3jW@u=-$LSuz zCTdU=^o_o%B9`~Hn z^Y?%K<*xuPBQMaFv^Qdo>zMl1!~HSKc6BE&5f)T2|Z8Nht78bh_HqBV{WKl1ZAHG~xuBR2;|2AQ}WtA8hRa?iDze z)?MGIjzD*`z1le$GnbaS`DEj^@l5d1Q^$?A@D z+>&PI^hUg|0I)@1Ui$n$gxO&(i9`&G#?(_0s&Vbs;;oDxi3jk0X>!9d+$#b#QE89+ zaY02Z+5}pvjFHt>Oom=eo}F6>-~oa5Dw4wu5WqtM4ZduF{(TWy$$zB1%wL7eLL;`L zBZMeA=_;RB)b#+3E?$YYw+GQJ5U+xzWnE)MOS(>MNzY2tj%%)F+G)pkQ~)u7TGLpj zN8$o?76U0IaJf8;N=*2~Wfjyu1_{c{I=bziJm!g6AdpyC>3lhl% zDszc8KJrZu;9;g1$zA4yNnLZ9QW&Y7jMT%KR1g#M2u4E~#$|z%dspb1ZJWAg1#nd$ zuqgv`ZiPOGK349fA`y9v;hKsMV4N56h=K!{;Kguscf61=CG)ZXD6y6i`axU|VG;=f zq^?E!xr~=e1iJ33Y$Y|3PGMSVJ0l=dmQ2->#4z=25Oaio#7GL@!vdid!%7t+Odwj0 z-;W*7q&e3xV+F*TNe~NI4B=6HL?FC>KY)+&Zc37 zH#Ns$0zZOqM*nB=ObAb7n~hM3Uvy!3I4PO*$Z%&K{5*5@H?alEx9Vtye~is#Ge0O!pqVSUtuPR z7?G7op{@xCrn=+aip=d^?PjJZbYT8U#GvOpt4)4*L1wcxNS<1xTgzn3Tiund=ahSB zBf;|6b=U6i@m$}4sckH$G&$>)sP39-%KJp3I_7CwiUcP4g0Rwpr{@FJdL9(l$}@w zb$44;niN$zt9VmyXpT1RZZ|8vqC@Fb`kI?+nooz7U`_RZZ!J0e?Tz|6$*)gHQ70?? z)w9m>&{2X}(J?RBxolE@L|@LO{q#lrbzT)0;vWk$WAo}hZffDSs~roirP-v~*&1)% zPkDrU$&-DpzH~op`6~|bt7W&SXl|K#eVPMKO}S*;-&$x$eZspitETiA474tKskD?2 zkHqMZ6J*#it;XBpU4sL|aWx+AZR;Bzyr}jKwe=4V4yyeFZ3DxDm-fu+`9c+tsS>h%+M#M+5XSwHkS45qPA>uB|L2>HFHVJ8uGok*sx%v zEw6JFh&-CJTw_B|Seu4pkjDSQ8r%DNW6Q~Fv1+IMO;)YOgvGBOuMWt%s1|~7l6@6B zlY=5s;9ODIQbAOOg!9!v%61Wl!j4A%kqPQh&$r+520Ne4Q3+K{LL=Sslj~ zd=uZI?dD1SZEtOcKXZHsuW;=)Kb61BwOYJN`QO9$Q9~3N`ruV!rL7UfYaHdQfhR;! zivZr@+A)O-Dkp{KA31AK5Zva#X&wH=XPA6eIfA-8R~-M$QNgchS^Pg=wf=ACD+Z|i zRZZXr42at|QIo(A6ZlaAKgLfI_$hvtz|ZmeO$Z0Sz#BJF@1V}XFCDz*puxc_4x@30 QERK`KulfI`NBWz812SR&;{X5v literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlin$1$1.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlin$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..30616d8709f3128cc9c6cc19e09c7daa4bb11c09 GIT binary patch literal 4042 zcmbVP`CA*;6+KS^MhLl6V&SHaI6AZP?=7IyYY3mHqLkx^&l$jC1 zZPU7Iy6^kmbl+PiaiIO$kFP)WkLuU+Mk6tRz;S=j%$v8|<=k`cyZX<6|Nbuk7qBky zOu;VaT+cP-+PO11%l4$38?!yru!gLnV;jXWFI}*$MWa-8WNjhcpYGQn1YQ|m@ptBy zSIarW@}y(wW^PZAJZ#5tq(F;og{SPcFfjBza5kW$rC6n)-O(2GM#Ls>3~SY1kpfTe?`BirxBN`k5Dg+CaD0cKx+ZY)^7O<@BVR7r9{ zpgW{6$a6*BK<~(!C&?_9oH0+sdjt+r_o`8pmjj&wRxJ}kVGquR$yKLYpkcR3+Z^9+ zhjQt5T_0^9!t-%l!Z3}gWnEoN}uMOL#3bUV?b4VN z{Xr}fcnMAiDqw7qTcN9!It^8U6HQb!71W7`R2r=bbOd;)UPHr&X>opX=K9d&@QA>H zx_N#hlE6ptN;^J+j|oI7ET^f^y%3nlzfc z;Iv$njh8a^xV#Qhrs4WA=EJL4C_7X(@dSC98yjNwZH=fY48o4V_Uc^zCI zAqRt*pkMh)9IxW51pMupui@)^bOv;>Q4_u?(9YuRlZcgaBvXg~KHxC<_QJT2wdmXU zP8{FDcX|Kqed7#d2NvZ)s85mOHch!r)6a&gU2Bbpy6 zk|HNJ?gjd$;8EhYWEUH~9y9phxM9i3YI#9A!KU+-tJ;WzBUZt*UEWGIU)Ba%I0EK+Qtw>HyL#^8_&q#zBh|f*lN&f4 zLG}$CxQFL%q|S3j+{MM{>2+M5=sCHLE9;otz;pyXJsV(+*~I%(H`npvCKlGQxPj$} zuQh_ZRFI_|ZMcFiUiwec))Rc^Fpg*W8^i=gG0D{l%;K8w$1$3fLk24_eUIiE9?jt} z%9QXrrD`NST}Iu#!yFy~+Y_EqP@SiHWG|B0n&}(xqO@~WAyu=h&0in$btYb=Ed7B}h@R4t`QuLj%h+Ie+EI*u>3h$IgjSL%o=@I95pb>hX_ z6<&K7_KHWmBgm2AUf~kT&zRjbNm^8729ubw@eytiQCH!~-204SecZ+@ZvMCGH(lAk zR^_Y>HS+$1!7;b_KiEv-Q--kt9UJ?7s))xz?HoauK=qIJ8SdD)jX8#;3%q~$4vF4N zXf&i^SlcKu+C21)MkQO#C5C+OC}a1IY%6Qo*0e=x zws$mZEwTk`(RyM3^-ID^nW*LihS4&Yq5QcMb`|v+CB5_E=aR%ThVcuNg5l<%oz8Xt zt0?Rb3d3y$-_jIVKR<5nw>3k0({D+xY2r|8SHmVPxmxJ)V2ejS-w8y+2*RuRQq;Sh z9T5#J`JcK{`yJuR17G>%blNDDv)&_2VsSTYo^I0Y$hcC9s2Xsk1bvRLN-qc%wa&nm z!QKqJktf!uIFHG|w(>OZM9~kn5p(g-#UmGA;jv2_-?(^!r`uo(C6u=jS6Eh9QMjvc F?O#%W#jgMW literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$$inlined$getByType$1.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$$inlined$getByType$1.class new file mode 100644 index 0000000000000000000000000000000000000000..25088325f04b7206f898c6c08041142243779d08 GIT binary patch literal 1641 zcmd5+OH&g;5dLNplDMKMDuVbxjSBIx1g%nxkHQF5DWXzBap5${4(q^XhT55=;FgoW z#j7VR4_3;fKgzN4mJ+W7w$bDDZ-a`=Rjo zp7bKI9g4d3VxL#rkA}B-WaT!mTjOnt$Vjcq-11NdW_jNV6&p%VN(>kN7&VJD!@WZ; zyWJ{0--O;EPFX96S~w$o@(VO4sdGaGUx@5G7wR2%gx_Lwp=i^k)WF z{tkK;GYk{StY=vHjU8)|?)JUgPu?3Fuhx{I-(`Qyz_M;Mv>N1HiV1NAR~b$X!*yrZ zQZs(^ai`Vrq_QGXJoMIeGpdW{qSg$4Mq(Ig@vtcv-mbq`T5}WPxxKk{3+ppKv=#T} zOmQa3HyQC^PkI$>zo~Aa>K3mSZ!Ii7EV_kdm-t=QKIJo3rAd3)Y}7=w!D}H|#;dx{ z!%ZH^_`h!)ttcAEa>$JlG!HQ&g^e|YFak$e-fG|wG zZYnDqVpAGP*DNV|)wrcsgrZOP_bRIO+b)W5Xh8cD63;75${hWA@x;(NQuu)5?@4h` zAereJ&*LWPu`4-X3@2#K;ucAlY!0o!6mFAD<1+HNLz;sW1&!Bhn5XqW=^Oz7+^4Kh zQYGVCNL6sEg3}e8!33!|Tfrozw!jR|VR{Q`gYyO#3@#d6!U7#WPKU44ccbex`yDdK B<-`C0 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$1.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2f87e00d1572c85d5b285289f77bd0fd2ca2c785 GIT binary patch literal 2354 zcmbVOZByGu5PnV=1hxZ)6bLj;+u#PUQv{)Dni@!eK;vRw8VGGe+i*!$Un6U_Mj$vY~MIeh#wd%;FBVS05!q1IwGu(X(gPDx_%>{Oe zw7+k8&-vk@{emI;7G9G`AlU^CR~TYr`SI-}I?)qHJ5nT2s0Q-PGJ z5J_CedvUyr8w|ZKEy#-~3s=Vn40@g0HLD&jA|7>N0d%4rPBHXF3K}9a+-Z^jOGP}N7L@*TN2|i;CigkrTdUUFXm&HTbgBgm ztfDq;ba-T`9aT;T)U>xHg$G9tWC0vHmN<1|NUc!)~T#as%c_| zOGmz_IyH~RA%WghtZO|c-Bs7rY~qJr6xP=f1uiF$RnsNy6E|wB-13*=$Xi5e?xaB_6K@@rdNht zS_c|O=)+ZdBPF~Ofr^8ZtevWx0(up_L(JU}Go9@lI>Gzd)b$g5bc(Eo%&+J^1(7Fq zf=^E|qd_^-P^7h+tUGXxkcKdV;Ya}KivZFXq(2r6CDPZ4nxu~NC)k#NvCnzsSJUf30hhd93EKhV?u)@Kqj9u(<=~VGB=p5c9C@;cE}G9{T?S Dcn*4F literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$2.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt$configureKotlinAndroid$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..bbf7cdc5ec40909a9217c36866d2d377ebafaf17 GIT binary patch literal 2000 zcmbVMZBrXn6n^d!k`T7?VoL#Qp>1pfNEfJDYXU8%!EQ+d5*lrBMsKpW;lk!Fv%6v7 z8^6V0pmoMtopBgH`lB4r&8BIXBE$G$@1DK)oaecF&U4P+|NQsWkGT2A0vd9Sf2U9q;;is>LdRWi&j zWf{i*n>K+M!_}_yQ>YV&GsJU};FcJAGE)_XSjL{Jm`Ea(LNEGhBixn&!~NDZ|96_` zvT>>Qyqh4>nmMM>nl(Vx|6|hqv-i{Ye$4tpG(RpS5!M5Ww+#orKammob>V&Z1x za*N=IC-3>9D5(nm;X@HL>s;rgpm^04juzB&jXH&CjXJ|Heg5h*+&m@!Q(XmUm&C*X z22(I#G4!`Zue&4xN^#OIl{c45`2xd*H_g~;Arp7-Ngo#QDTA>`p2P1VQ+TdMvw&Je zcSWBj`9cT2*GE>4VdxFy6A^NUhn%EtH1>OFyfD2a^#TUAtBoEyJdoO&Bg-Mq^zo6I zIzCDngGS02HOL%1J{mXX*t9WcJWBobW86sUC})9wEytCo4jW!GpoS&T>sl0NH)R4v zs^sYdjA7*+Ijs9$r1CTM*6>u}AQaRxLYA< zXjyFPg<+s5l_)hERpGaH(i=?`%7(Djz6>Neby{)xZFdt7<$Bw5I)^l$Oj{}8=UpBI zf<6Zds^)qD2{CeI=qt;*;vvm&>cFTqR%o^|jI}u{5n~q-=BUKIlx7<87}GVUy2a=r z9nj7OS!wd1N+3QRdj<1nvKY#=n$a#Uv|@&|JkisN_<zI!s!VnqMNZlER!>OP*N=1_u%h6_) zf@8~5+_K5_VZ~8&vzY0cVrcHvwY<&H^`B405kt!+gb-&4r?OpBaY)z_Lo-@w!x=DCx%6pfOn7*r&Ro5*p~ z8L#SkMncCs78jeM$w1OSQPKLI^950l-V^*^1j-ee-3tgtga~ip2EuQCgwWtUo3C}R>psEqI+oQVs7u6C8+7kAX zsX)m+DalcEFtp5ShU(d1NCmxI@yT_w>S(%rxguau^h_L`IM9OqI7pz@16#$9BE`^D z?lt!&Wc0T8~I>PsyoC z7+^?07KDaiBYtXwy@9wyk}Hd|zB%szaP;SRbX7i=FHvx-T%qS2E|?xX5r|jk2IfLurno-Q!HI zqkEj(a?>a9&~<7banbf@<#N?g@;aArh2fZQEa!Gjs>40>*V6ZEPBd&^r8ZENVv$?* zq)3fLZd;(<{bV z6mtwxc6?%TXnc5tVe`u5tk1eQ=26-N4LU=pLVcTD+icW4D`zfoM^R~1kz1kiLKBU8 zCKgF7U|=OdG!e6=3964Mm6UcaFU4caOR-QQ6btPP5t&$C+7;?!-J!nFh1hT3MnaM} zrS_BWgNk7qi)FKF)956n9UITBDBh*3dHu%(!|1AkC7PCc)g1&vwU)WX>!o`V_TF!IJ6Y9KLH5{$Xv&MpEYjn;RA8O1*>hi2%aBEmsY+KCF))Awin>LLm z*9OC;39V=-4!x)7l9@28R)LRFXHbiK2Buu~0j+dphv=QaKu@kjLcAkH2I(h3JSaXS z>L`6f^lj-*|BTJu;a`xrLw^}QqIHMM!d4{d9|_e}FnmmOGkK8!v8XahC+T9h$(BT{ zhw0=~_pm3Oe75^1Y)N_aq`hBH~L-HzZ~} ziD)|cYI{^j2&h8%gw|8of(Q-ZeK?E(^k4`wrU`!q{kTae-=cB#4UXeGoWui?_#GMi zi9!5L?`Z+`RYGn6ckmi+kj80zO&V?xt~XJ^>qLd=^f+m|K^Q+E8+oE4q#=d^QBi@q zpQeXsgGwpv4A(Ts9|vi%%-^CnnBpc+cw^@q1xE?FI!4~EC2ui literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt.class b/build-logic/dependencies/build/classes/kotlin/main/com/stslex93/notes/KotlinAndroidKt.class new file mode 100644 index 0000000000000000000000000000000000000000..3d4219397ad16dfeab293f9747ac21c212efd482 GIT binary patch literal 5032 zcmeHKX;&N98Gi1tNDQ*ADDj44mw+4#u?PWnF^f||pjOS|8bU+eIvu1z3=AVOGs1S- zG_-NLq)GREU(<9wr~YE7&*|a#V}C+F_J{QJxigXw0=d}fhkhs=&0XL9eV=>p-~aX3 zzX2G=p9Nadxz&W@I;MW>VsFCAxw@0Ml58QJ8IMHf)AE9>TIta9ShAivuf~^^r zL)Gad&82=$Vk+lOFz?l`#e~IPw)r4WWx@~D@B4xQY$&IuVz#)O7 z=_NhAQlP)8+1jekjRNOl6P1o0ESs5;OtLg2gd+&6IE*KPXb^Z}hlqmotZoPJlt5rz zGxPfNA_EmmwUzNHY#I#V7>=triW35D2M$aCO#+7;-DSYm3{#)UtVjv_@Ry1{jnj=d zg);)fQo_S?tx8~`$!IcwX6a|cGTci7U9m?>q!3!rs^S?$cgJTjZ>9ZMju(2A^DM2) z=!;t3q=hoSnFX*sx~iv$D2I+vs+e)u!82eGo&97{IWAsu!Wb3F0|wS6)P8x7KXkk+?A@lRktI zzd)WBn0oxYiy9W8P|rkZ#PhdjZ?EYx5nm9fiAfK%U|hu*J}hv$!UMLxXcF!cl4N=@ zfD{X?VoPC+$5$NF@b5ur^GAfdI}BAUW&D~1@TdV zWQAIq?HY?(+I13hx-I=Vs=1n(%Q~g#1TZ5|YZ?m-!;1oS7SSuioG(X!B2ra`x*B(? z`!T%Kh*``F^z8(?tEBl5)%oYfyTufs{#~BnSc}x8g~nVL7<~Ltv+6!6(6PtURW*c`Zz?Hz2XN7nhg1E_pq{66jQd1%Z3od}$0tvZs=h{)og2IK$r}E=F>f?C;pQf5O z4R=XGjzE8THIAB^;}9ecAe@Ex8a~^ISMj>Q@gl$2%)mfeGU<{x4c6M{m}`$-YZ5%) z5V-Id=UFsK&ARYr1Mc7p3{-_FBL&ZWi3d*U7#q{lO9D-MYRlj39ocW;E7I1tN#5>`~@1b@M@Hhj1#6y^q{Tf~)a<+9Qg3)d7!Jx$@-rehH$SX24yuDiUw z@!-As`UiLGL*YPE?FrExeCfek5AI0$nI0h(3g6Uhi&so%#2K^goXva>?}Cx86;~i$ zG;h}xcP5v&)A|egLOxr9JKA06T|$NU$IRr&Rke~?VM2}1H2X_xd|YjBP8LRmM+l{= z|2f-8*V9}QT`I-Wj3e2U<;{wJPnR%V+OrSU6_<>AoBfl#wDBR#DtCGe`kH-wC>HsF z7LZmq0YwkJ`CdX9d@f=RLsaQ2;eB(#Z0d*n&^o$Q#Z zxlr2~ZrQ}iEqp*h=Y2dg-+2#bw{dO@?VPxaq}T6LNFCoqe|!sk*33sfw29Gy+L{Y> zC;6$rkFoiCxV(*zY~iZHG+~v!I!xm0`Ib~&}qMAdr0Ag z%8vhikG%#3!3{R-Hpv$T_tMc=r&NiM9rP0~2lJ6zo+DnJs2OgLd}a$9(ixxU++BQe z8(-eSI|_FE5TRD!MLj~jn%TBfZ)smMc}D1?uhIgAT8Hs9e4WZr4s1_vsZyPQy}<^* zAQuuZX-@$iN_#VEW!VmDn>ktlpgdbl=gM;%9e&XO22X&4dt~kgz_$epxC-OQ> NUO(sW7aq+o{|zhx-}L|h literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab new file mode 100644 index 0000000000000000000000000000000000000000..b8b177966c2fa2db0b3fca0ab589ce670838d3e5 GIT binary patch literal 4096 zcmbR3vzw0r2-rac3Vz7{A$Q&>d7n>njXumAXN=V_-Ql<1_O*JfhTJ+K7hk0Kfpb literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..301da0da9ffeb6a75f8debdc338d851e9e7fa5d3 GIT binary patch literal 4207 zcmd58nu5Y~_>Lx8@42d<5hbn57)4w5=QhT|G-fkvRkt4f3-8Io$F4B3M|L?5PW z-y~ySph`qqQGSY+5QQ!V3>)8f-`#h2yg1qgOh65$kP1ZxJ3kiZG>l!A^I1!W{o8P>Y`b}9^`JkD|TG2}!E zO7`hOVO368kx{;W`^Wd4;UO#~E72y}s*yhiK(5d?YxE=#y2IC9<1?Hu2(APm%B#8n zL8;)MXjUk2oJDt>jzi-dQ6yBBWC{}o36?Y&riKcRHtI~i^I|<1&4$nS4tH7(T(3Qs z}w7P%A}?i%+p1hnVkg@1>ZQjP5g&6Ui2Qza)O-qPHhKc|C+blgbC)_ zpKFodynn>C83V+_`gKb}R$UTPk$-n%>3uf?Cjy#HXtokrZCH@%z&WNm}1H+}y3 z=c{^Estf@F1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C73KZBxr|E3BEU=nN4FvYF zbN>uR4OX+PY$N46uNPUugb*M=fB*pk1PBlyK!5-N0t7lJaEhNVs}^6fB*pk z1PBlyK!5;&f(6#m?RrkDf-9;OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> IWMDu>0JcIB2><{9 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..e27a66b8fdc08d3ba3770417fe906b7d9deb0b6d GIT binary patch literal 32768 zcmeIuu?>ST6h%=>hz+QbG7ZWI?o*M171DrGrVCxNNk*W~HvEzijC@>uxqA1cHZ{p3 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZph|&9RNwwvt}?#h=vQpZQ!^Gk(KG@C z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7dX(E@9%`(5Ux=#j<|AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N h0t5&UAVAH>Rzd2i5_h#X3y=T+ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab new file mode 100644 index 0000000000000000000000000000000000000000..6c768fbc21cf7b161875d78a42babb5a8bcf2f6c GIT binary patch literal 4096 zcmbR3vzw0r2v|V`3WKIOM3kUmHI?4r4W+laErb7FSs2{V>1`T#a$%0Elx8f8Yf24dC0S(I^AUy6NtyYKQkmKq#b4Yoz_(sL^Zg;w?y z%x4m-nNTOr8EjQRvMCLYJXB`v(60J$6oYk literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..e27a66b8fdc08d3ba3770417fe906b7d9deb0b6d GIT binary patch literal 32768 zcmeIuu?>ST6h%=>hz+QbG7ZWI?o*M171DrGrVCxNNk*W~HvEzijC@>uxqA1cHZ{p3 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZph|&9RNwwvt}?#h=vQpZQ!^Gk(KG@C z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7dX(E@9%`(5Ux=#j<|AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N h0t5&UAVAH>Rzd2i5_h#X3y=T+ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab new file mode 100644 index 0000000000000000000000000000000000000000..466cf9fdb450471d56cda2096924eec029d1dd76 GIT binary patch literal 4096 zcmbR3vzw0r2pB;G3gx?1t|goWO0ZHe)1gDeEh0LWk*9` nGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n$PEDi1lYwAz<>b*2L2p) D48a5v literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..296694d3c0b2935793fbfb8b84f4496d1f079fc4 GIT binary patch literal 8 LcmZQz00V9S022TV literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..9ce923237c81a852489277823e5233d9a00fc121 GIT binary patch literal 129 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#4n zV*mmsAm(8RV{l~%VhCpNWbkM3V~A&P2GTA-F(44Ys=$xIk-?Y2l?5ot!eGdt2gGIo DoTD0$ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..f2fa1138e11e3f9484c972ae95b19dbae4c03a5c GIT binary patch literal 32768 zcmeIuF%1A95Cp*^h{F~xD3OFEkU;g-tbt7?Ej=PYfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U dAV7cs0RjXF5FkK+0D&@r`A%z(Q#LgE61eE50?_~f literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab new file mode 100644 index 0000000000000000000000000000000000000000..79a9e90d360b46cef8fd0a865334fc8d2abd9cf9 GIT binary patch literal 4096 zcmeIuze@sf7{~FaA3{ikPAw8TwiNUaRHNah)Z%7Kqmx1ujnP!I3Qg7Gl$$P2Ez#T_ z1|mU|nwB5mhaEVzwLK5qz3%RNKe%@#(_Awq73{)^%?>UX%q}<-6I_|Uhb0TPaDuh{ z-;??4;rd^`@ctw>oZ~TW;Td)&(k)i;3A6Z#QC#OE?H_3m%Xos@c!%%bQU_~ji)J}Y z;0orkHI|B4!fV{YNBkH`ulRuRC9?u%a08F%*1yuviraX65A vc#oSAvqLOn1RL1sOI<7=zvbfvynq+*0$#uicmXfq1-yV4@B&`o-wI3t-7bmD literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..cd41799a0a585be8bb0d72abbc4e33237a16926c GIT binary patch literal 4096 zcmeH{O-sZu5QaT__8mc5`i6VY4b&nOTfbRx6Gz3viFcSQYB`c{3K6HvV zxC@d210j8?&GF#BAoi*VM0Pe$@7}p7&-Y zOh0Q)9j;~#{SKcg=&C2F7xhi6&m1MM~eV&pj>_Ej(jv5C>{u zkpo{#&{Wr3^6j3@#u#d__ha;URCRrmCN0$iq4aBFjvlDC27jc~z#4&SDMqRB^Kg4z owcFmr+wJY}#ox7nF1HZ@+Hs#F;0QPZj({WJ2si?cz`r8!0X1zulK=n! literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..fae47492a08a6297b9f72c6ca11e134864671515 GIT binary patch literal 8 McmZQz00A}y001-qCjbBd literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..b797c4d2ee86fd517925c6dfd186e4c359366499 GIT binary patch literal 8 McmZQz00G7h005EziU0rr literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..4b831f870f7c697ea096256e063ff42fcbbfff5c GIT binary patch literal 2541 zcmeH}F;BxV5QY6yGIWjy7CM$dX$x(lfVv{rK9y4)pLKR6`1hnJ>VQCP+AK((Jo)MA zeb0B6Vg||pXEkVIlTC@U3OHbh;Nnb$_oeb{W%uwBiPaWXVmYena`8~SzTMC3ku>1J z8E_gQ$iP}Q3Z2|hwCyo*h6&BYdy85{Bv(-5DL`fSTXgv@4z2enrdRnp8cRZdGE5nr z?)mT;EyTQkv!8Lpia&q8x*@d+ad)w=V@gQ`O~-23Ovd824;}BawkEiIzeAsPKSWDKF<{^Z_#yS#+!J<=~niT;j1S%@}_C@fb z6Sb*{00L$TJXfrGtd=q}9jOpN009ILa91Ft&wWSpUoX4c)!c45MO*w;=#h=qNH3A4AfB*srAbv=zGfO@v_(d#*!?w?nKH!m0VobE$?1Q0;LZh=#J z{{DM1F=2OI>LGxDcLJ08yPiE?@%%Z^ErFEszCZqJ%B_C%F+x+DG)G2 z;H=)y@BRE9F(VBrx)rGE#K(Vbz3cY;PUp?&KKrp*+UfLr97g~F1Q0;LPJx{EpEFw} z$M!cnXQdVbZ3T26X9hy&+8*Zs0tg_000Ic~oWPv+?^n}&58QJXhJg@3009JS5g61y zcei-rsx8GRf&c;tAYiP(P3;%ibmpmP0q-l&kRs9b~hZ}4EuZLEr#~IW8 Pyz(SccDfJs_b2cVbO}-~ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab new file mode 100644 index 0000000000000000000000000000000000000000..efbcb3fff08f8e07ee26de40adbe0e4116c20417 GIT binary patch literal 4096 zcmbR3vzw0r2$(?x3OdXeI*hA literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..de8bf971512d4df852e1abe45b2e9f8f8ae26385 GIT binary patch literal 8 LcmZQz0D~j|0BQhZ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..a9f80ae0249093f1db8b14f71053acce35747e3d GIT binary patch literal 8 LcmZQz0D~C-0H6Sw literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..33c7d6ca799638d1815cc94c15997eb434b7d667 GIT binary patch literal 58 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> IWMG6K07@GY3IG5A literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..1d6d638df3aaaa66a5c3c9deacda5e94b6895c6d GIT binary patch literal 32768 zcmeIuF%5t)5Qfnvb%7HUpoxu<4F*=EU;rU(T~NSzXc*eO6Y%H0mvYL<5gWv0MZ4&|Nq|tq!<7C|NlCW?)?dIACNf; qMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E1M7p< literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..04b119cbbf39f5cc5a2a806c4ec3c01b3a12a134 GIT binary patch literal 4096 zcmeIuF$=;l5Cvdo2PX&7LD1a{PL8Ex9GqOGHbD-PTu82<|K4J=6!jPQGUnaAgKu30 zlbB2uqocMF;!v}XobAbVHwuf-dJuFq(W(Ag&69`v(+7mDf}L zXDDI$D^3lvD@f^Yw!)ae}I#+k(ebNTd~6>{2Td1H^J*HBRg&H!ys~%R}TQxP+zuKr_rTW=@ z`xN6EV4UixhzlLnhuFqr~5s-*|z*qPKEu* zPK(L>C6hR~ifw1YESL(Kn@p|@+`Qa7<|h2` zkVm~E^go3I?hSFpBbiNkds7zrsSWu_=wZUM-_FSVr=EhL?inyC*UC7vj&(w@uU=j#J`2bR(UegQ~xq*nj{ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..91148400b594f5171a5fa42b5f76443974b7654f GIT binary patch literal 32768 zcmeIup$>sz6b9gblXOY2xeQleEBbQ)>$ z4S`vNt{#KKH?n0CAV7cs0RjXF5Fn7Yz$xmzF8MR0To07 z>8U_^_22*h?*nN&Agu&6%;wMk|It8N0Z6X~(zky>+=I`|QMu6&7!85Z5Eu=C(GVC7 cfzc2c4S~@R7!85Z5Eu=C(GVC70YnG@09R`wDgXcg literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..ecff7bb49610f85bdc18b3c09f6a8a19f4b0e4cc GIT binary patch literal 4096 zcmeIvJqyAx5P)HSOy_2B(Xm#A`qfgzRcdm`(ex6M2>S00QaZTRj$W2bdAU4yOscxv zZSwPVUDSzCV1X2nMDW5pDY^zpv?l0yWu%-zm07D%HUSOgrnAOFr5|^sv<=%ywINfC z&m8dP8u$7hX!Ubx7-lghVeJK+k1`RX9Pv<^F7?4{crNEDnGp4R?fyrxcbeAQf0o!+ cV{XQW1z3OuSbzmsfCX591z3OuSm2KY-q94doB#j- literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..43ef6aab8fe291fde231ae4bfa25baf85c7ffe29 GIT binary patch literal 8 McmZQz00G8d009I5`~Uy| literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..817b326d9eb94f6a38f5e047201a69ab944ef476 GIT binary patch literal 8 LcmZQz0D~O>0Kfpb literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..897b8317466c6bd5e59e6d89e05304a1ba4930c8 GIT binary patch literal 1740 zcmbtUO-sW-5M2;^@ZiaVRM1if@npME#P3oIQm9H%>9uT=H7-qd!|n#`-}AqC@<(Xe zrpBac6PxSKyf?#pZ?=Zolvq?&o~S9LRk;(g(xp-{r772KqTU{e*CUQkpS6(0rV8yf zxg`a&nx5w{lV~P*OSqm;wCngbTN2Bmed4ix(;Pbt_3|QkM_@H0RR~z%YIh literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..bf446e0ad4225a9ff5ab2f93579fc3a0cbcf6333 GIT binary patch literal 32768 zcmeIuAqoOf5C-6d7u17z4M8v)JcHG0)o9!(Sd4;2YzECnFCl`(W_GUN@>m}1H+}y3 z=c{^Estf@F1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C73KUpJr|E3BEU=nN4Foo^ zbN>uR4OX+PoFe5ruNPUugb*M=fB*pk1PBlyK!5-N0t7lJP{+@gae8;~buSYjK!5-N z0t5&UAV7dX!2;Xpc0H$6!4*{_K!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAdp>PABn^M?U+4SAOQjd2oNAZpe2Dr+<85ola|goLx2DQ0t5&U LAV7csfxiWQoc$7q literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..bdf584a84b58bf0b45e9b3a4c946653433feaad2 GIT binary patch literal 4096 zcmbR3vzw0r2pB;G3eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..2f0b1735fe7c95c424ece083a6833294c5d60c85 GIT binary patch literal 4096 zcmeIufe8R02mryBXbop+1)&f@DuniL5BVG6`biT@ov}o(%ZO*b8yH}K0R|XgfB^;= NV1NMz7+|2#zz47r2mk;8 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..2647ad19c9b8bf280c32bc0153a2addbdf0de579 GIT binary patch literal 8 LcmZQz00S`q03HAr literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..61242d0f515bd9d17fdfc27315b331423028c447 GIT binary patch literal 157 zcmZY0u?|2m5CBjgVUQT~4}3!-5d(>k*pFT~sa|uf!QUHL#QgHgq(Lw!YQTlXsG3Ff zD1kym7aIs$2Yv#3;uu+A#XTvsGs0xF_m&oj#IEAQbHLu7E4l3N59BYjGz-Y}N$J;~ Fa03K3JJJ9E literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..a685cceb0ae916d9d86fae067671530f0a818cf5 GIT binary patch literal 32768 zcmeIuF%bYD5Cg$5SV0$B(1{Ovu<#wlroJ?rmL4NOfB*pk1PBlyK!89&V7+#nJqs5p z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U dAV7cs0RjXF5FkK+009C72oNAZfB=E-1uk!20@eTk literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..d906e9e54895ff13a1ee521516f47ec595453950 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_3OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#1` eV-U?RO4my-N=(T~)k`eM)CKIx2olLQjDThvD!Tzqda8b^?mM9lRqzN9AV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBl)Qecg%$M+eE9G~&%Gqw#&HD#PAjQ{}x1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5Fn7Xz!mH6Zriht6i0vn0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs TfkfblchmNB^5rBz;3t6(nU@Ho literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab new file mode 100644 index 00000000..3d952e7c --- /dev/null +++ b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -0,0 +1,2 @@ +7 +0 \ No newline at end of file diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab new file mode 100644 index 0000000000000000000000000000000000000000..533c74588788103d157c2f5c1984ae446d64bbc0 GIT binary patch literal 4096 zcmbR3vzw0r2-rac30TrA8 z(o=!-As~GpNbdpCNS00QaZTRj$W2bdAU4yOscxv zZSwPVUDSzCV1X2nMDW5pDY^zpv?l0yWu%-zm07D%HUSOgrnAOFr5|^sv<=%ywINfC z&m8dP8u$7hX!Ubx7-lghVeJK+k1`RX9Pv<^F7?4{crNEDnGp4R?fyrxcbeAQf0o!+ cV{XQW1z3OuSbzmsfCX591z3OuSm2KY-q94doB#j- literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..43ef6aab8fe291fde231ae4bfa25baf85c7ffe29 GIT binary patch literal 8 McmZQz00G8d009I5`~Uy| literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..817b326d9eb94f6a38f5e047201a69ab944ef476 GIT binary patch literal 8 LcmZQz0D~O>0Kfpb literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..25454f32baadef9abd2a46657e796ddb67161bb6 GIT binary patch literal 91 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> XVE_Rz$p|Kyz$7!6WC4?`V3G|0pe7PE literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..bf446e0ad4225a9ff5ab2f93579fc3a0cbcf6333 GIT binary patch literal 32768 zcmeIuAqoOf5C-6d7u17z4M8v)JcHG0)o9!(Sd4;2YzECnFCl`(W_GUN@>m}1H+}y3 z=c{^Estf@F1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C73KUpJr|E3BEU=nN4Foo^ zbN>uR4OX+PoFe5ruNPUugb*M=fB*pk1PBlyK!5-N0t7lJP{+@gae8;~buSYjK!5-N z0t5&UAV7dX!2;Xpc0H$6!4*{_K!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAdp>PABn^M?U+4SAOQjd2oNAZpe2Dr+<85ola|goLx2DQ0t5&U LAV7csfxiWQoc$7q literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab new file mode 100644 index 0000000000000000000000000000000000000000..6979346e1325855df32fa7d691aadd5fb6c58ea8 GIT binary patch literal 4096 zcmeH@%L#xm5C#2v5X766*oBSQgrpCz79rS!eb|I?7BzSh3wRHb*=&9=Q@_>`DQ$Yv zT*U$$!xQVg&&0GDAq7=+ub#dOyWhpe`*vr93G84B_rv=P&M=1qw0~L%6d8~K8IS=P UkO3Kx0U3}18IS=Pkb$2DPU03JAOHXW literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..2459ed687d441aba38ffb9935e376d2ba65878a1 GIT binary patch literal 4096 tcmeIu0TBQ|1OPDn(?7BvZi}$UdcP+yV8DO@0|pEjFkrxd0Rsl^4lG}^02TlM literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..379d85ced69049230006887a8ba1241e30c6e7df GIT binary patch literal 8 LcmZQz00VXa01p5N literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..817b326d9eb94f6a38f5e047201a69ab944ef476 GIT binary patch literal 8 LcmZQz0D~O>0Kfpb literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..4ff0390daa9ca1a2fe9854f880a1672be21a597a GIT binary patch literal 569 zcmbu+yAHxI3ZoTN%C4~ z%kLOWJ7!i9YBh7tXeok5n_%tGLus0;w(&iz+3GLv18v!6IJDOn67>8Im9Y8G)+f-E vO@<)Oox0w!E2U(`fK`cg?1MM(n2uwMq5VVOdw*9e7A*fy+`S*#yDj(vLN&{o literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..0667ccd230691e805561eaf82040d187c95dd0f2 GIT binary patch literal 32768 zcmeIuD-M7_5JbV@w`X68T)7g-5osJ}Al1oBMvSUzwbf@m_ma-Erjg!e#{d8T literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab new file mode 100644 index 0000000000000000000000000000000000000000..5534205963943d6b1e72b5c5e74372dd9fd59929 GIT binary patch literal 8192 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 a0sdFx%)c`oIMabM9XQj0GadLpci?}IBIWx4 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..4a7bbbad2415f118a673f0da53e290eceb497a2b GIT binary patch literal 8 McmZQz00GH`007$ny8r+H literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..9c17e6cf043734bb3892dea496d9421487c735c7 GIT binary patch literal 8 McmZQz00Hp;004#nXaE2J literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..3ec3954a593140cc8e0e9eff4241ed9e7ba4d66e GIT binary patch literal 5847 zcmeHK!A`?445b^JIB?*|fy4fQzd&4&5J=oBr~nBu)Q$fqd9TE-lXNZH#5S$cEH{2} z>}MxguTO5P@};V057qO$ewp3O>)Cx(FWwi+>T`KpF5d3Sucz|kyLw#C>+-caJ@F4@ z0Xc#kpZVd!o0N@+BG?3FH9vbKIQqbQ(xTU}vuL~U^Zesu8oA#X*@>IuGpJTrC9$4W5AQ z?!ir2r?_K&Jhp_nGHvZ;MJpW>j_7Fm`S503;M|9 zU0k|F@r2dgoAAQukf9s*u3C9qVX6~)wnxE3W=(btd`gs}A>RMux|JQ7Q}QsnNA22U zh0wV?NB^tm;sSkSv+u}RybrY)c89B*4|~Jkp5f-q-^B4gLWS~QWKC4+ z=4x?i>Z`u>^$d&BHtK>9Ek@}Pi?i<<3w`)W=sD&0r(&Cau^Lz#!gb7ks9oZJAl696 zAi1uPVzQ^qYJ)tQcOw6n)y+ zx#)ujy>I^BJ#p5W8Sb`@C_^+nhou|V*1*cdu%h0@B3iz)Vm2l6V9V_g)G$VMjD$Xt t*w)reC&jDVE|e9?rL`v+ZoVnZ+-8&>`paQn1l?EbA4v|GS}BLs<3HtvFZ=)i literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/build-logic/dependencies/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..120978e900a17c167bdc45d99e9c4f89f1d4d6e1 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/build-logic/dependencies/build/pluginDescriptors/notes.android.application.compose.properties b/build-logic/dependencies/build/pluginDescriptors/notes.android.application.compose.properties new file mode 100644 index 00000000..88aa609d --- /dev/null +++ b/build-logic/dependencies/build/pluginDescriptors/notes.android.application.compose.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationComposePlugin diff --git a/build-logic/dependencies/build/pluginDescriptors/notes.android.application.properties b/build-logic/dependencies/build/pluginDescriptors/notes.android.application.properties new file mode 100644 index 00000000..fb01ba97 --- /dev/null +++ b/build-logic/dependencies/build/pluginDescriptors/notes.android.application.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationPlugin diff --git a/build-logic/dependencies/build/pluginDescriptors/notes.android.library.compose.properties b/build-logic/dependencies/build/pluginDescriptors/notes.android.library.compose.properties new file mode 100644 index 00000000..411423ea --- /dev/null +++ b/build-logic/dependencies/build/pluginDescriptors/notes.android.library.compose.properties @@ -0,0 +1 @@ +implementation-class=AndroidLibraryComposePlugin diff --git a/build-logic/dependencies/build/pluginDescriptors/notes.android.library.properties b/build-logic/dependencies/build/pluginDescriptors/notes.android.library.properties new file mode 100644 index 00000000..80de8bc0 --- /dev/null +++ b/build-logic/dependencies/build/pluginDescriptors/notes.android.library.properties @@ -0,0 +1 @@ +implementation-class=AndroidLibraryPlugin diff --git a/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.compose.properties b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.compose.properties new file mode 100644 index 00000000..88aa609d --- /dev/null +++ b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.compose.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationComposePlugin diff --git a/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.properties b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.properties new file mode 100644 index 00000000..fb01ba97 --- /dev/null +++ b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.application.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationPlugin diff --git a/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.compose.properties b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.compose.properties new file mode 100644 index 00000000..411423ea --- /dev/null +++ b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.compose.properties @@ -0,0 +1 @@ +implementation-class=AndroidLibraryComposePlugin diff --git a/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.properties b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.properties new file mode 100644 index 00000000..80de8bc0 --- /dev/null +++ b/build-logic/dependencies/build/resources/main/META-INF/gradle-plugins/notes.android.library.properties @@ -0,0 +1 @@ +implementation-class=AndroidLibraryPlugin diff --git a/build-logic/dependencies/build/tmp/jar/MANIFEST.MF b/build-logic/dependencies/build/tmp/jar/MANIFEST.MF new file mode 100644 index 00000000..58630c02 --- /dev/null +++ b/build-logic/dependencies/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt b/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt index 0af5f7bb..3b2c49ab 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/database/Converters.kt @@ -7,15 +7,15 @@ class Converters { @TypeConverter fun jsonListString( - value: List? - ): String = Gson().toJson(value ?: emptyList()) + value: Set? + ): String = Gson().toJson(value ?: emptySet()) @TypeConverter fun jsonToListString( value: String - ): List = if (value.isBlank()) { - emptyList() + ): Set = if (value.isBlank()) { + emptySet() } else { - Gson().fromJson(value, Array::class.java).toList() + Gson().fromJson(value, Array::class.java).toSet() } } \ No newline at end of file diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt index 21e0a389..fde19aaf 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/label/LabelDao.kt @@ -11,7 +11,10 @@ import kotlinx.coroutines.flow.Flow interface LabelDao { @Query("SELECT * FROM label_table WHERE uuid = :uuid LIMIT 1") - fun getLabel(uuid: String): Flow + fun getLabel(uuid: String): LabelEntity + + @Query("SELECT * FROM label_table WHERE uuid in (:uuids)") + fun getLabels(uuids: Set): Set @Query("SELECT * FROM label_table WHERE uuid in (:uuids)") fun getMatchLabels(uuids: List): Flow> diff --git a/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt index d8ca45ef..6414d34f 100644 --- a/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt +++ b/core/database/src/main/java/com/stslex93/notes/core/database/note/NoteEntity.kt @@ -16,5 +16,5 @@ data class NoteEntity( @ColumnInfo(name = "timestamp") val timestamp: Long, @ColumnInfo(name = "labels") - val labels: List + val labels: Set ) diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt index d658d78a..ef17a12d 100644 --- a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt +++ b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepository.kt @@ -12,7 +12,9 @@ interface LabelRepository { suspend fun removeLabel(uuid: String) - fun getLabel(uuid: String): Flow + suspend fun getLabel(uuid: String): LabelDataModel + + suspend fun getAllLabels(uuids: Set): Set fun searchLabels(query: String): Flow> } \ No newline at end of file diff --git a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt index d6d9e44d..a9efc872 100644 --- a/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt +++ b/core/label/src/main/java/com/stslex93/notes/core/label/repository/LabelRepositoryImpl.kt @@ -8,8 +8,6 @@ import com.stslex93.notes.core.label.model.LabelDataModel import com.stslex93.notes.core.label.repository.LabelPagerExt.getPagingLabels import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flowOn -import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext import javax.inject.Inject import javax.inject.Singleton @@ -36,13 +34,19 @@ class LabelRepositoryImpl @Inject constructor( } } - override fun getLabel( + override suspend fun getLabel( uuid: String - ): Flow = dao.getLabel(uuid) - .map { label -> - label.toData() - } - .flowOn(Dispatchers.IO) + ): LabelDataModel = withContext(Dispatchers.IO) { + dao.getLabel(uuid).toData() + } + + override suspend fun getAllLabels( + uuids: Set + ): Set = withContext(Dispatchers.IO) { + dao.getLabels(uuids) + .map { it.toData() } + .toSet() + } override fun searchLabels( query: String diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt index bac4db1c..704f3483 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataMapper.kt @@ -7,12 +7,13 @@ fun NoteDataModel.toEntity() = NoteEntity( title = title, content = content, timestamp = timestamp, - labels = emptyList() + labels = labelUuids ) fun NoteEntity.toData() = NoteDataModel( id = id, title = title, content = content, - timestamp = timestamp + timestamp = timestamp, + labelUuids = labels ) \ No newline at end of file diff --git a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataModel.kt b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataModel.kt index d7cb8299..2e276b31 100644 --- a/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataModel.kt +++ b/core/notes/src/main/java/com/stslex93/notes/core/notes/model/NoteDataModel.kt @@ -5,4 +5,5 @@ data class NoteDataModel( val title: String, val content: String, val timestamp: Long, + val labelUuids: Set ) \ No newline at end of file diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index eeaac8b5..e0e32fdc 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -10,4 +10,5 @@ dependencies { implementation(project(":core:ui")) implementation(project(":core:navigation")) implementation(project(":core:notes")) + implementation(project(":core:label")) } \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponent.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponent.kt index dd8f5fef..38eb9cd3 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponent.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponent.kt @@ -1,9 +1,9 @@ package com.stslex93.notes.feature.home.di import androidx.lifecycle.ViewModelProvider +import com.stslex93.notes.core.label.di.LabelApi import com.stslex93.notes.core.notes.di.NoteApi import com.stslex93.notes.core.ui.di.NavigationApi -import com.stslex93.notes.core.ui.di.Navigator import dagger.Component @Component( @@ -19,7 +19,11 @@ interface HomeComponent { } @Component( - dependencies = [NoteApi::class, NavigationApi::class] + dependencies = [ + NoteApi::class, + NavigationApi::class, + LabelApi::class + ] ) interface HomeDependenciesComponent : HomeDependencies { @@ -27,7 +31,8 @@ interface HomeComponent { interface Factory { fun create( noteApi: NoteApi, - navigationApi: NavigationApi + navigationApi: NavigationApi, + labelApi: LabelApi ): HomeDependencies } } diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponentBuilder.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponentBuilder.kt index d36d1f6c..3aec3c44 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponentBuilder.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeComponentBuilder.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import com.stslex93.notes.core.core.AppApi import com.stslex93.notes.core.core.appApi +import com.stslex93.notes.core.label.di.LabelApiBuilder import com.stslex93.notes.core.notes.di.NoteApiBuilder import com.stslex93.notes.core.ui.base.daggerViewModel import com.stslex93.notes.core.ui.di.NavigationApi @@ -22,7 +23,8 @@ object HomeComponentBuilder { .factory() .create( noteApi = NoteApiBuilder.build(appApi), - navigationApi = navigationApi + navigationApi = navigationApi, + labelApi = LabelApiBuilder.build(appApi) ) ) } diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeDependencies.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeDependencies.kt index 1fd0d301..d3a3c192 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeDependencies.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/di/HomeDependencies.kt @@ -1,5 +1,6 @@ package com.stslex93.notes.feature.home.di +import com.stslex93.notes.core.label.repository.LabelRepository import com.stslex93.notes.core.notes.repository.NoteRepository import com.stslex93.notes.core.ui.di.Navigator @@ -7,5 +8,7 @@ interface HomeDependencies { val noteRepository: NoteRepository + val labelRepository: LabelRepository + val navigator: Navigator } \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractor.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractor.kt index 6fcf9e28..0b2f4a65 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractor.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractor.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.Flow interface HomeInteractor { - fun queryNotes(query: String): Flow> + fun searchNotes(query: String): Flow> suspend fun deleteNotes(noteIds: List) } \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractorImpl.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractorImpl.kt index 9ef1c88f..db34b768 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractorImpl.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/interactor/HomeInteractorImpl.kt @@ -2,25 +2,38 @@ package com.stslex93.notes.feature.home.domain.interactor import androidx.paging.PagingData import androidx.paging.map +import com.stslex93.notes.core.label.repository.LabelRepository import com.stslex93.notes.core.notes.repository.NoteRepository import com.stslex93.notes.feature.home.domain.model.NoteDomain import com.stslex93.notes.feature.home.domain.model.toDomain +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import javax.inject.Inject class HomeInteractorImpl @Inject constructor( - private val repository: NoteRepository + private val noteRepository: NoteRepository, + private val labelRepository: LabelRepository ) : HomeInteractor { - override fun queryNotes(query: String): Flow> = - repository.searchNotes(query).map { pagingData -> - pagingData.map { note -> - note.toDomain() + override fun searchNotes(query: String): Flow> = + noteRepository + .searchNotes(query) + .map { pagingData -> + pagingData.map { noteDataModel -> + val labels = labelRepository + .getAllLabels(noteDataModel.labelUuids) + .map { + it.toDomain() + } + .toSet() + noteDataModel.toDomain(labels) + } } - } + .flowOn(Dispatchers.IO) override suspend fun deleteNotes(noteIds: List) { - repository.deleteNotesById(noteIds) + noteRepository.deleteNotesById(noteIds) } } \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/LabelDomain.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/LabelDomain.kt new file mode 100644 index 00000000..19862cfa --- /dev/null +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/LabelDomain.kt @@ -0,0 +1,7 @@ +package com.stslex93.notes.feature.home.domain.model + +data class LabelDomain( + val uuid: String, + val title: String, + val colorRgb: Int, +) diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomain.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomain.kt index c5c30261..0e7c9a66 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomain.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomain.kt @@ -5,4 +5,5 @@ data class NoteDomain( val title: String, val content: String, val timestamp: Long, + val labels: Set ) \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomainMapper.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomainMapper.kt index f709611c..b67b8f27 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomainMapper.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/domain/model/NoteDomainMapper.kt @@ -1,10 +1,18 @@ package com.stslex93.notes.feature.home.domain.model +import com.stslex93.notes.core.label.model.LabelDataModel import com.stslex93.notes.core.notes.model.NoteDataModel -fun NoteDataModel.toDomain() = NoteDomain( +fun NoteDataModel.toDomain(labels: Set) = NoteDomain( id = id, title = title, content = content, timestamp = timestamp, + labels = labels +) + +fun LabelDataModel.toDomain(): LabelDomain = LabelDomain( + uuid = uuid, + title = title, + colorRgb = colorRgb ) \ No newline at end of file diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/HomeScreen.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/HomeScreen.kt index cbe284b3..5918f938 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/HomeScreen.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/HomeScreen.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.paging.PagingData import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems +import com.stslex93.notes.core.ui.emptyImmutableSet import com.stslex93.notes.core.ui.theme.AppDimens import com.stslex93.notes.core.ui.theme.PreviewTheme import com.stslex93.notes.feature.home.ui.components.HomeScreenFloatingButton @@ -140,7 +141,8 @@ fun HomeScreenPreview() { id = index, title = "title $index", content = "content: $index", - timestamp = 0 + timestamp = 0, + labels = emptyImmutableSet() ) }.toList() ) diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Label.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Label.kt new file mode 100644 index 00000000..c01a8b4e --- /dev/null +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Label.kt @@ -0,0 +1,11 @@ +package com.stslex93.notes.feature.home.ui.model + +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color + +@Stable +data class Label( + val uuid: String, + val title: String, + val color: Color +) diff --git a/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Note.kt b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Note.kt index 207ccce5..6124736e 100644 --- a/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Note.kt +++ b/feature/home/src/main/java/com/stslex93/notes/feature/home/ui/model/Note.kt @@ -1,6 +1,7 @@ package com.stslex93.notes.feature.home.ui.model import androidx.compose.runtime.Stable +import kotlinx.collections.immutable.ImmutableSet @Stable data class Note( @@ -8,4 +9,5 @@ data class Note( val title: String, val content: String, val timestamp: Long, + val labels: ImmutableSet