From 14ae20e166be15231cc494243e9a52bf7121e58b Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Fri, 28 Jan 2022 00:36:32 +0100 Subject: [PATCH] Add: Add new repo button --- .../com/looker/droidify/ui/items/RepoItem.kt | 2 +- .../ui/viewmodels/RepositoriesViewModelX.kt | 15 +++++++++++ .../res/layout/fragment_repositories_x.xml | 26 +++++++++++++++---- src/main/res/values/strings.xml | 1 + 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/items/RepoItem.kt b/src/main/kotlin/com/looker/droidify/ui/items/RepoItem.kt index 010036c0..1da4193c 100644 --- a/src/main/kotlin/com/looker/droidify/ui/items/RepoItem.kt +++ b/src/main/kotlin/com/looker/droidify/ui/items/RepoItem.kt @@ -28,7 +28,7 @@ class RepoItem(val item: Repository) : else context.getColorFromAttr(R.attr.colorOnBackground) - binding.repoName.text = item.name + binding.repoName.text = item.name.ifEmpty { context.getString(R.string.new_repository) } binding.repoDescription.text = item.description.trim() binding.repoItem.setCardBackgroundColor( diff --git a/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt b/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt index 91bf69b3..faf429a4 100644 --- a/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt @@ -3,8 +3,13 @@ package com.looker.droidify.ui.viewmodels import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope import com.looker.droidify.database.DatabaseX import com.looker.droidify.database.entity.Repository +import com.looker.droidify.database.entity.Repository.Companion.newRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() { @@ -14,6 +19,16 @@ class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() { repositories.addSource(db.repositoryDao.allLive, repositories::setValue) } + fun addRepository() { + viewModelScope.launch { + addNewRepository() + } + } + + private suspend fun addNewRepository() { + withContext(Dispatchers.IO) { db.repositoryDao.insert(newRepository()) } + } + class Factory(val db: DatabaseX) : ViewModelProvider.Factory { @Suppress("unchecked_cast") override fun create(modelClass: Class): T { diff --git a/src/main/res/layout/fragment_repositories_x.xml b/src/main/res/layout/fragment_repositories_x.xml index 1e2fa5fc..f8b9d569 100644 --- a/src/main/res/layout/fragment_repositories_x.xml +++ b/src/main/res/layout/fragment_repositories_x.xml @@ -33,13 +33,29 @@ android:layout_gravity="top" android:clipToPadding="false"> - + android:orientation="vertical"> + + + + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 77adda41..518331c7 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -185,4 +185,5 @@ Automatically install app updates after syncing repositories Number of updated apps to show Number of new apps to show + New repository