Skip to content

Commit

Permalink
05/07/2024.
Browse files Browse the repository at this point in the history
  • Loading branch information
youndon committed Jul 5, 2024
1 parent ce5d5f4 commit d99366e
Show file tree
Hide file tree
Showing 78 changed files with 1,173 additions and 230 deletions.
1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@
android:name="android.hardware.camera"
android:required="false" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
Expand All @@ -24,6 +25,8 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"
tools:ignore="SelectedPhotoAccess" />

<application
android:name=".NoteApplication"
Expand Down
9 changes: 7 additions & 2 deletions app/src/main/java/city/zouitel/jetnote/NoteActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package city.zouitel.jetnote

import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
Expand Down Expand Up @@ -40,14 +43,16 @@ class NoteActivity : ComponentActivity(), KoinComponent, IntentHandler {
require(!isDeviceRooted.value.getOrNull()?.isDeviceRooted!!) {
"Cannot run JetNote on rooted device!".asLongToast()
}
MainTheme(dataStoreModel) @Suppress("all") {

MainTheme(dataStoreModel) {
BottomSheetNavigator(
sheetShape = ShapeDefaults.Large,
sheetElevation = 150.dp
) {
Navigator(MainScreen(true))
}
}

IntentHandler(intent, navigator) {}
}
}
Expand All @@ -59,7 +64,7 @@ class NoteActivity : ComponentActivity(), KoinComponent, IntentHandler {

override fun onDestroy() {
super.onDestroy()
linkScreenModel.urlPreview(this, null/*, null, null, null*/)?.cleanUp()
linkScreenModel.urlPreview(this, null)?.cleanUp()
WidgetReceiver.updateBroadcast(this)
}

Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/city/zouitel/jetnote/NoteApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import city.zouitel.database.di.databaseKoinModule
import city.zouitel.datastore.datastoreKoinModule
import city.zouitel.init.initializerKoinModule
import city.zouitel.links.di.linksKoinModule
import city.zouitel.media.di.mediaKoinModule
import city.zouitel.screens.di.navigationKoinModule
import city.zouitel.note.di.noteKoinModule
import city.zouitel.notifications.di.notificationKoinModule
Expand Down Expand Up @@ -56,6 +57,7 @@ class NoteApplication: Application(), KoinComponent, ImageLoaderFactory {
navigationKoinModule,
initializerKoinModule,
rootKoinModule,
mediaKoinModule
)
}

Expand Down
2 changes: 0 additions & 2 deletions common/systemDesign/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ dependencies {

//Accompanist.
implementation(libs.accompanist.permissions)
implementation(libs.accompanist.pager)
implementation(libs.accompanist.pager.indicators)
implementation(libs.accompanist.systemuicontroller)
implementation(libs.accompanist.navigation.animation)
implementation(libs.accompanist.swiperefresh)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package city.zouitel.systemDesign

object CommonConstants {
const val APP_VERSION = "5.7.3"
const val APP_VERSION = "5.8.0"
const val APP_NAME = "JetNote"
const val NONE = "unspecified"

Expand Down
63 changes: 61 additions & 2 deletions core/database/schemas/city.zouitel.database.Database/1.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "cddfa9dc370b73ab53f9c894202b6dc5",
"identityHash": "c7cb924f82eda6b261d8857824000dbc",
"entities": [
{
"tableName": "notes_table",
Expand Down Expand Up @@ -344,12 +344,71 @@
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "media_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is video` INTEGER NOT NULL, `media_path` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isVideo",
"columnName": "is video",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "path",
"columnName": "media_path",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "note_and_media",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`noteUid` TEXT NOT NULL, `mediaId` INTEGER NOT NULL, PRIMARY KEY(`noteUid`, `mediaId`))",
"fields": [
{
"fieldPath": "noteUid",
"columnName": "noteUid",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "mediaId",
"columnName": "mediaId",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"noteUid",
"mediaId"
]
},
"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, 'cddfa9dc370b73ab53f9c894202b6dc5')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c7cb924f82eda6b261d8857824000dbc')"
]
}
}
10 changes: 6 additions & 4 deletions core/database/src/main/java/city/zouitel/database/Database.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import city.zouitel.database.model.*

@Database(
version = 1,
autoMigrations = [
// AutoMigration(from = 1, to = 2)
],
autoMigrations = [],
entities = [
DataEntity::class,
TagEntity::class,
Expand All @@ -19,7 +17,9 @@ import city.zouitel.database.model.*
LinkEntity::class,
NoteAndLinkEntity::class,
AudioEntity::class,
NoteAndAudioEntity::class
NoteAndAudioEntity::class,
MediaEntity::class,
NoteAndMediaEntity::class
],
exportSchema = true
)
Expand All @@ -35,4 +35,6 @@ abstract class Database:RoomDatabase() {
abstract fun getNoteAndLinkDao(): NoteAndLinkDao
abstract fun getAudioDao(): AudioDao
abstract fun getNoteAndAudioDao(): NoteAndAudioDao
abstract fun getMediaDao(): MediaDao
abstract fun getNoteAndMediaDao(): NoteAndMediaDao
}
26 changes: 26 additions & 0 deletions core/database/src/main/java/city/zouitel/database/dao/MediaDao.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package city.zouitel.database.dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import city.zouitel.database.model.MediaEntity
import kotlinx.coroutines.flow.Flow

@Dao
interface MediaDao {

@Query("SELECT * FROM MEDIA_TABLE")
fun getAllMedias(): Flow<List<MediaEntity>>

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun addMedia(media: MediaEntity)

@Update(onConflict = OnConflictStrategy.REPLACE)
fun updateMedia(media: MediaEntity)

@Delete
fun deleteMedia(media: MediaEntity)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package city.zouitel.database.dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import city.zouitel.database.model.MediaEntity
import city.zouitel.database.model.NoteAndMediaEntity
import kotlinx.coroutines.flow.Flow

@Dao
interface NoteAndMediaDao {

@Query("SELECT * FROM NOTE_AND_MEDIA")
fun getAllMedias(): Flow<List<NoteAndMediaEntity>>

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun addNoteAndMedia(noteAndMedia: NoteAndMediaEntity)

@Update(onConflict = OnConflictStrategy.REPLACE)
fun updateNoteAndMedia(noteAndMedia: NoteAndMediaEntity)

@Delete
fun deleteNoteAndMedia(noteAndMedia: NoteAndMediaEntity)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package city.zouitel.database.datasourceImpl

import city.zouitel.database.dao.MediaDao
import city.zouitel.database.mapper.MediaMapper
import city.zouitel.repository.datasource.MediaDataSource
import city.zouitel.repository.model.Media
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map

class MediaDataSourceImpl(
private val dao: MediaDao,
private val mapper: MediaMapper
): MediaDataSource {
override val getAllMedias: Flow<List<Media>>
get() = dao.getAllMedias().map { medias -> mapper.toRepo(medias) }

override fun addMedia(media: Media) {
dao.addMedia(mapper.fromRepo(media))
}

override fun updateMedia(media: Media) {
dao.updateMedia(mapper.fromRepo(media))
}

override fun deleteMedia(media: Media) {
dao.deleteMedia(mapper.fromRepo(media))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package city.zouitel.database.datasourceImpl

import city.zouitel.database.dao.NoteAndMediaDao
import city.zouitel.database.mapper.NoteAndMediaMapper
import city.zouitel.repository.datasource.NoteAndMediaDataSource
import city.zouitel.repository.model.NoteAndMedia
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map

class NoteAndMediaDataSourceImpl(
private val dao: NoteAndMediaDao,
private val mapper: NoteAndMediaMapper
): NoteAndMediaDataSource {
override val getAllNotesAndMedia: Flow<List<NoteAndMedia>>
get() = dao.getAllMedias().map { notesAndMedia -> mapper.toRepo(notesAndMedia) }

override fun addNoteAndMedia(noteAndMedia: NoteAndMedia) {
dao.addNoteAndMedia(mapper.fromRepo(noteAndMedia))
}

override fun updateNoteAndMedia(noteAndMedia: NoteAndMedia) {
dao.updateNoteAndMedia(mapper.fromRepo(noteAndMedia))
}

override fun deleteNoteAndMedia(noteAndMedia: NoteAndMedia) {
dao.deleteNoteAndMedia(mapper.fromRepo(noteAndMedia))
}
}
Loading

0 comments on commit d99366e

Please sign in to comment.