Skip to content

Commit 4406329

Browse files
committed
Refactoring to cleanup activity classes
1 parent 8b37648 commit 4406329

16 files changed

Lines changed: 766 additions & 728 deletions

app/src/main/java/com/philkes/notallyx/data/model/ModelExtensions.kt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
package com.philkes.notallyx.data.model
22

33
import android.content.Context
4+
import android.content.ContextWrapper
5+
import android.content.Intent
6+
import android.net.Uri
47
import android.text.Html
58
import android.util.Base64
9+
import androidx.core.content.IntentCompat
610
import androidx.core.text.toHtml
711
import com.philkes.notallyx.R
12+
import com.philkes.notallyx.data.dao.BaseNoteDao.Companion.MAX_BODY_CHAR_LENGTH
813
import com.philkes.notallyx.data.dao.NoteIdReminder
914
import com.philkes.notallyx.data.imports.markdown.createMarkdownFromBodyAndSpans
1015
import com.philkes.notallyx.data.model.BaseNote.Companion.COLOR_DEFAULT
1116
import com.philkes.notallyx.presentation.applySpans
17+
import com.philkes.notallyx.presentation.showToast
18+
import com.philkes.notallyx.presentation.viewmodel.NotallyModel
1219
import com.philkes.notallyx.utils.decodeToBitmap
20+
import com.philkes.notallyx.utils.getFileName
21+
import com.philkes.notallyx.utils.getMimeType
22+
import com.philkes.notallyx.utils.log
1323
import java.io.File
1424
import java.text.DateFormat
1525
import java.text.SimpleDateFormat
@@ -560,3 +570,83 @@ fun ColorString.isValid() =
560570
false
561571
}
562572
}
573+
574+
fun Intent.generateBaseNote(context: ContextWrapper): BaseNote {
575+
val title = getStringExtra(Intent.EXTRA_SUBJECT) ?: data?.let { context.getFileName(it) } ?: ""
576+
val intentFiles =
577+
IntentCompat.getParcelableArrayListExtra(this, Intent.EXTRA_STREAM, Uri::class.java)
578+
?: IntentCompat.getParcelableExtra(this, Intent.EXTRA_STREAM, Uri::class.java)?.let {
579+
listOf(it)
580+
}
581+
val text =
582+
(data?.let { uri ->
583+
context.contentResolver.openInputStream(uri)?.use { inputStream ->
584+
try {
585+
inputStream.bufferedReader().readText()
586+
} catch (e: Exception) {
587+
context.log(
588+
tag = "",
589+
msg = "Reading text contents from intent failed",
590+
throwable = e,
591+
)
592+
null
593+
}
594+
}
595+
?: run {
596+
context.showToast(R.string.cant_load_file)
597+
null
598+
}
599+
} ?: getStringExtra(Intent.EXTRA_TEXT) ?: "")
600+
.let {
601+
if (it.length > MAX_BODY_CHAR_LENGTH) {
602+
context.showToast(
603+
context.getString(
604+
R.string.note_text_too_long_truncated,
605+
MAX_BODY_CHAR_LENGTH,
606+
)
607+
)
608+
}
609+
it.take(MAX_BODY_CHAR_LENGTH)
610+
}
611+
val (images, files) =
612+
intentFiles?.let {
613+
val filesByType =
614+
it.groupBy { uri ->
615+
context.getMimeType(uri)?.let { mimeType ->
616+
if (mimeType.isImageMimeType) {
617+
NotallyModel.FileType.IMAGE
618+
} else {
619+
NotallyModel.FileType.ANY
620+
}
621+
} ?: NotallyModel.FileType.ANY
622+
}
623+
val images =
624+
filesByType[NotallyModel.FileType.IMAGE]?.let { images ->
625+
images.map { FileAttachment("", it.toString(), "") }
626+
} ?: listOf()
627+
val files =
628+
filesByType[NotallyModel.FileType.ANY]?.let { otherFiles ->
629+
otherFiles.map { FileAttachment("", it.toString(), "") }
630+
} ?: listOf()
631+
Pair(images, files)
632+
} ?: Pair(listOf(), listOf())
633+
return BaseNote(
634+
id = -1L,
635+
type = Type.NOTE,
636+
folder = Folder.NOTES,
637+
color = Color.FOG.toString(),
638+
title = title,
639+
pinned = false,
640+
timestamp = 0L,
641+
modifiedTimestamp = 0L,
642+
labels = listOf(),
643+
body = text,
644+
spans = listOf(),
645+
items = listOf(),
646+
images = images,
647+
files = files,
648+
audios = listOf(),
649+
reminders = listOf(),
650+
viewMode = NoteViewMode.EDIT,
651+
)
652+
}

app/src/main/java/com/philkes/notallyx/presentation/activity/LockedActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ abstract class LockedActivity<T : ViewBinding> : AppCompatActivity() {
4545
private lateinit var biometricAuthenticationActivityResultLauncher:
4646
ActivityResultLauncher<Intent>
4747

48-
protected lateinit var binding: T
48+
internal lateinit var binding: T
4949
protected lateinit var preferences: NotallyXPreferences
5050
val baseModel: BaseNoteModel by viewModels()
5151

0 commit comments

Comments
 (0)