diff --git a/app/build.gradle b/app/build.gradle index 1c832a7e..5f327079 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -126,7 +126,7 @@ dependencies { implementation "androidx.appcompat:appcompat:$appCompatVer" implementation "androidx.constraintlayout:constraintlayout:2.1.4" - implementation 'com.google.android.material:material:1.8.0' + implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.core:core:1.9.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0431a1b8..50fd1f2b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -115,6 +115,7 @@ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index f14d2645..cee184bc 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -185,25 +185,23 @@ class MainActivity : AppCompatActivity() { } private fun askPermissions() { + val permissions = arrayListOf() if (!checkFilePermission()) { if (Build.VERSION.SDK_INT >= 33){ - ActivityCompat.requestPermissions( - this, - arrayOf(Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO), - 1 - ) + permissions.add(Manifest.permission.READ_MEDIA_AUDIO) + permissions.add(Manifest.permission.READ_MEDIA_VIDEO) }else{ - ActivityCompat.requestPermissions( - this, - arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), - 1 - ) + permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE) } } if (!checkNotificationPermission()){ + permissions.add(Manifest.permission.POST_NOTIFICATIONS) + } + + if (permissions.isNotEmpty()){ ActivityCompat.requestPermissions( this, - arrayOf(Manifest.permission.POST_NOTIFICATIONS), + permissions.toTypedArray(), 1 ) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt index 0060a596..6a930f84 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt @@ -40,8 +40,11 @@ interface CommandTemplateDao { @Query("DELETE FROM commandTemplates WHERE id=:itemId") suspend fun delete(itemId: Long) - @Query("INSERT INTO templateShortcuts(content) VALUES(:content)") - suspend fun insertShortcut(content: String) + @Insert(TemplateShortcut::class, OnConflictStrategy.REPLACE) + suspend fun insertShortcut(shortcut: TemplateShortcut) + + @Query("SELECT COUNT(id) FROM templateShortcuts WHERE content=:content") + suspend fun checkExistingShortcut(content: String) : Int @Query("DELETE FROM templateShortcuts WHERE id=:itemId") suspend fun deleteShortcut(itemId: Long) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt index f462c702..d873c68f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt @@ -30,7 +30,9 @@ class CommandTemplateRepository(private val commandDao: CommandTemplateDao) { } suspend fun insertShortcut(item: TemplateShortcut){ - commandDao.insertShortcut(item.content) + if (commandDao.checkExistingShortcut(item.content) == 0){ + commandDao.insertShortcut(item) + } } suspend fun deleteShortcut(item: TemplateShortcut){ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/UiUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/UiUtil.kt index 4ece271f..c3ae092b 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/UiUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/UiUtil.kt @@ -88,8 +88,8 @@ class UiUtil(private val fileUtil: FileUtil) { override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} override fun afterTextChanged(p0: Editable?) { ok.isEnabled = - !(title.editText!!.text.isEmpty() || content.editText!!.text.isEmpty()) - if (ok.isEnabled){ + (title.editText!!.text.isNotEmpty() && content.editText!!.text.isNotEmpty()) + if (content.editText!!.text.isNotEmpty()){ content.endIconDrawable = AppCompatResources.getDrawable(context, R.drawable.ic_delete_all) }else{ content.endIconDrawable = AppCompatResources.getDrawable(context, R.drawable.ic_clipboard) @@ -97,10 +97,6 @@ class UiUtil(private val fileUtil: FileUtil) { } }) - if (content.editText!!.text.isEmpty()){ - - } - content.setEndIconOnClickListener { if(content.editText!!.text.isEmpty()){ val clipboard: ClipboardManager = @@ -117,7 +113,7 @@ class UiUtil(private val fileUtil: FileUtil) { val chip = context.layoutInflater.inflate(R.layout.suggestion_chip, shortcutsChipGroup, false) as Chip chip.text = shortcut.content chip.setOnClickListener { - content.editText!!.append(shortcut.content + " ") + content.editText!!.text.insert(content.editText!!.selectionStart, shortcut.content + " ") } shortcutsChipGroup.addView(chip) } diff --git a/app/src/main/res/layout/template_shortcuts.xml b/app/src/main/res/layout/template_shortcuts.xml index 2d4b993f..36cd6bd8 100644 --- a/app/src/main/res/layout/template_shortcuts.xml +++ b/app/src/main/res/layout/template_shortcuts.xml @@ -51,6 +51,16 @@ android:orientation="vertical" android:padding="15dp"> + + + + + + - - - -