Data migration into one sheet to rule them all.

This commit is contained in:
Thomas Andres Gomez 2023-09-08 19:34:15 +02:00
parent df7b43fd73
commit 747d5576ab
17 changed files with 32 additions and 46 deletions

View file

@ -5,6 +5,7 @@ import androidx.compose.runtime.getValue
import com.google.api.client.extensions.android.http.AndroidHttp
import com.google.api.client.json.gson.GsonFactory
import com.google.api.services.sheets.v4.Sheets
import com.pixelized.rplexicon.repository.authentication.AuthenticationRepository
import com.pixelized.rplexicon.utilitary.exceptions.ServiceNotReady
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.pixelized.rplexicon.repository
package com.pixelized.rplexicon.repository.authentication
import android.accounts.Account
import android.content.Context

View file

@ -1,8 +1,9 @@
package com.pixelized.rplexicon.repository
package com.pixelized.rplexicon.repository.data
import com.google.api.services.sheets.v4.model.ValueRange
import com.pixelized.rplexicon.facotry.RollParser
import com.pixelized.rplexicon.model.CharacterSheet
import com.pixelized.rplexicon.repository.GoogleSheetServiceRepository
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import com.pixelized.rplexicon.utilitary.exceptions.ServiceNotReady
import com.pixelized.rplexicon.utilitary.extentions.sheet

View file

@ -1,8 +1,9 @@
package com.pixelized.rplexicon.repository
package com.pixelized.rplexicon.repository.data
import com.google.api.services.sheets.v4.model.ValueRange
import com.pixelized.rplexicon.facotry.LexiconParser
import com.pixelized.rplexicon.model.Lexicon
import com.pixelized.rplexicon.repository.GoogleSheetServiceRepository
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import com.pixelized.rplexicon.utilitary.exceptions.ServiceNotReady
import kotlinx.coroutines.flow.MutableStateFlow
@ -40,9 +41,4 @@ class LexiconRepository @Inject constructor(
companion object {
const val TAG = "LexiconRepository"
}
private object Sheet {
const val ID = "1oL9Nu5y37BPEbKxHre4TN9o8nrgy2JQoON4RRkdAHMs"
const val LEXICON = "Lexique"
}
}

View file

@ -1,10 +1,11 @@
package com.pixelized.rplexicon.repository
package com.pixelized.rplexicon.repository.data
import com.google.api.services.sheets.v4.Sheets
import com.google.api.services.sheets.v4.model.ValueRange
import com.pixelized.rplexicon.facotry.LocationParser
import com.pixelized.rplexicon.facotry.MarqueeParser
import com.pixelized.rplexicon.model.Location
import com.pixelized.rplexicon.repository.GoogleSheetServiceRepository
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import com.pixelized.rplexicon.utilitary.exceptions.ServiceNotReady
import kotlinx.coroutines.async
@ -56,14 +57,6 @@ class LocationRepository @Inject constructor(
companion object {
private const val TAG = "LocationRepository"
private const val ROOT = "https://docs.google.com/spreadsheets"
const val SHEET_URL = "$ROOT/d/${Sheet.ID}/edit#gid=${Sheet.MARQUEE_GID}"
}
private object Sheet {
const val ID = "1gbWaqXChz8pDJ-O3-Q8a_0wbDAYGlVA2voL7nEJUSn0"
const val MAP = "carte"
const val MARQUEE = "marqueur"
const val MARQUEE_GID = "1581979177"
const val SHEET_URL = "https://docs.google.com/spreadsheets/d/${Sheet.ID}/edit#gid=1985553511"
}
}

View file

@ -1,8 +1,9 @@
package com.pixelized.rplexicon.repository
package com.pixelized.rplexicon.repository.data
import com.google.api.services.sheets.v4.model.ValueRange
import com.pixelized.rplexicon.facotry.QuestParser
import com.pixelized.rplexicon.model.Quest
import com.pixelized.rplexicon.repository.GoogleSheetServiceRepository
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import com.pixelized.rplexicon.utilitary.exceptions.ServiceNotReady
import kotlinx.coroutines.flow.MutableStateFlow
@ -41,9 +42,4 @@ class QuestRepository @Inject constructor(
}
_data.tryEmit(quests)
}
private object Sheet {
const val ID = "1sDAay8DjbRYKM39MvEXWs-RuvyxjOFpOfRZLAEWjIUY"
const val QUEST_JOURNAL = "Journal de quêtes"
}
}

View file

@ -0,0 +1,11 @@
package com.pixelized.rplexicon.repository.data
object Sheet {
const val ID = "1oL9Nu5y37BPEbKxHre4TN9o8nrgy2JQoON4RRkdAHMs"
const val LEXICON = "Lexique"
const val QUEST_JOURNAL = "Journal de quêtes"
const val MAP = "Lieux"
const val MARQUEE = "Points d'intérêt"
}

View file

@ -5,7 +5,6 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.material3.BottomAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Scaffold
@ -28,7 +27,6 @@ import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
import com.pixelized.rplexicon.LocalRollOverlay
import com.pixelized.rplexicon.LocalSnack
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.navigation.pages.LEXICON_LIST_ROUTE
@ -40,7 +38,6 @@ import com.pixelized.rplexicon.ui.navigation.pages.composableQuests
import com.pixelized.rplexicon.ui.navigation.pages.navigateToLexicon
import com.pixelized.rplexicon.ui.navigation.pages.navigateToLocation
import com.pixelized.rplexicon.ui.navigation.pages.navigateToQuestList
import com.pixelized.rplexicon.ui.navigation.screens.navigateToCharacterSheet
val LocalPageNavHost = staticCompositionLocalOf<NavHostController> {
error("LocalScreenNavHost not ready")
@ -65,15 +62,6 @@ fun HomeNavHost(
title = {
Text(text = stringResource(id = R.string.app_name))
},
actions = {
val screen = LocalScreenNavHost.current
IconButton(onClick = { screen.navigateToCharacterSheet() }) {
Icon(
painter = painterResource(id = R.drawable.ic_d20_24),
contentDescription = null
)
}
}
)
},
snackbarHost = {

View file

@ -18,7 +18,7 @@ import com.google.android.gms.auth.api.identity.GetSignInIntentRequest
import com.google.android.gms.auth.api.identity.Identity
import com.google.android.gms.auth.api.identity.SignInCredential
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.repository.AuthenticationRepository
import com.pixelized.rplexicon.repository.authentication.AuthenticationRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

View file

@ -10,7 +10,7 @@ import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.facotry.ConvertCharacterSheetIntoDisplayableFactory
import com.pixelized.rplexicon.model.CharacterSheet
import com.pixelized.rplexicon.model.Roll
import com.pixelized.rplexicon.repository.CharacterSheetRepository
import com.pixelized.rplexicon.repository.data.CharacterSheetRepository
import com.pixelized.rplexicon.utilitary.extentions.context
import com.pixelized.rplexicon.utilitary.extentions.modifier
import dagger.hilt.android.lifecycle.HiltViewModel

View file

@ -4,7 +4,7 @@ import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import com.pixelized.rplexicon.repository.LexiconRepository
import com.pixelized.rplexicon.repository.data.LexiconRepository
import com.pixelized.rplexicon.ui.navigation.screens.lexiconDetailArgument
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

View file

@ -8,7 +8,7 @@ import androidx.lifecycle.viewModelScope
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.model.Lexicon
import com.pixelized.rplexicon.repository.LexiconRepository
import com.pixelized.rplexicon.repository.data.LexiconRepository
import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import dagger.hilt.android.lifecycle.HiltViewModel

View file

@ -7,7 +7,7 @@ import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.model.Lexicon
import com.pixelized.rplexicon.model.Lexicon.Gender
import com.pixelized.rplexicon.model.Lexicon.Race
import com.pixelized.rplexicon.repository.LexiconRepository
import com.pixelized.rplexicon.repository.data.LexiconRepository
import com.pixelized.rplexicon.ui.composable.form.DropDownFieldUio
import com.pixelized.rplexicon.ui.composable.form.TextFieldUio
import com.pixelized.rplexicon.utilitary.composable.stringResource

View file

@ -9,7 +9,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.geometry.Offset
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.SavedStateHandle
import com.pixelized.rplexicon.repository.LocationRepository
import com.pixelized.rplexicon.repository.data.LocationRepository
import com.pixelized.rplexicon.ui.navigation.screens.locationDetailArgument
import com.pixelized.rplexicon.utilitary.cells
import com.pixelized.rplexicon.utilitary.line

View file

@ -6,7 +6,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
import com.pixelized.rplexicon.repository.LocationRepository
import com.pixelized.rplexicon.repository.data.LocationRepository
import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import dagger.hilt.android.lifecycle.HiltViewModel

View file

@ -4,8 +4,8 @@ import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import com.pixelized.rplexicon.repository.LexiconRepository
import com.pixelized.rplexicon.repository.QuestRepository
import com.pixelized.rplexicon.repository.data.LexiconRepository
import com.pixelized.rplexicon.repository.data.QuestRepository
import com.pixelized.rplexicon.ui.navigation.screens.questDetailArgument
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

View file

@ -6,7 +6,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
import com.pixelized.rplexicon.repository.QuestRepository
import com.pixelized.rplexicon.repository.data.QuestRepository
import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
import com.pixelized.rplexicon.utilitary.exceptions.IncompatibleSheetStructure
import dagger.hilt.android.lifecycle.HiltViewModel