Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import coredevices.coreapp.util.AppUpdate
import coredevices.database.AppstoreSource
import coredevices.database.AppstoreSourceDao
import coredevices.pebble.firmware.FirmwareUpdateUiTracker
import coredevices.pebble.services.PebbleAccountProvider
import coredevices.util.AppResumed
import coredevices.util.DoneInitialOnboarding
import coredevices.util.PermissionRequester
Expand Down Expand Up @@ -47,8 +46,7 @@ class PebbleAppDelegate(
private val appUpdate: AppUpdate,
private val analytics: CoreAnalytics,
private val clock: Clock,
private val appstoreSourceDao: AppstoreSourceDao,
private val pebbleAccount: PebbleAccountProvider
private val appstoreSourceDao: AppstoreSourceDao
) {
companion object {
private val INITIAL_APPSTORE_SOURCES = listOf(
Expand All @@ -64,8 +62,7 @@ class PebbleAppDelegate(
title = "Rebble App Feed",
algoliaAppId = "7683OW76EQ",
algoliaApiKey = "252f4938082b8693a8a9fc0157d1d24f",
algoliaIndexName = "rebble-appstore-production",
enabled = false
algoliaIndexName = "rebble-appstore-production"
)
)
}
Expand All @@ -88,19 +85,6 @@ class PebbleAppDelegate(
} else {
logger.d { "Appstore sources database already initialized" }
}

GlobalScope.launch {
val rebbleSource = appstoreSourceDao.getAllSources().first()
.firstOrNull { it.title == "Rebble" }
if (rebbleSource == null) {
return@launch
}
pebbleAccount.get().loggedIn.collect {
if (it == null) {
appstoreSourceDao.setSourceEnabled(rebbleSource.id, false)
}
}
}
}

fun init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import coredevices.pebble.Platform
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.cache.HttpCache
import io.ktor.client.plugins.UserAgent
import io.ktor.client.request.get
import io.ktor.client.request.parameter
import io.ktor.http.Url
Expand Down Expand Up @@ -45,6 +46,10 @@ class AppstoreService(
private val logger = Logger.withTag("AppstoreService-${parseUrl(source.url)?.host ?: "unknown"}")
private val httpClient = httpClient.config {
install(HttpCache)
install(UserAgent) {
// TODO: Replace it with an actual version whenever you do it in BootConfig
agent = "CoreApp/9.9.9 (${platform.storeString()})"
}
}
private val searchClient = source.algoliaAppId?.let { appId ->
source.algoliaApiKey?.let { apiKey ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -756,4 +756,4 @@ fun StoreAppResponse.toLockerEntry(sourceUrl: String? = null): LockerEntry? {
}
}
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,13 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.UriHandler
import androidx.compose.ui.unit.dp
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import coredevices.database.AppstoreCollection
import coredevices.database.AppstoreCollectionDao
import coredevices.database.AppstoreSource
import coredevices.database.AppstoreSourceDao
import coredevices.pebble.account.PebbleAccount
import coredevices.pebble.services.AppStoreHome
import coredevices.pebble.services.RealPebbleWebServices
import coredevices.pebble.services.StoreCollection
Expand All @@ -59,17 +56,13 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.koin.compose.viewmodel.koinViewModel
import org.koin.core.parameter.parametersOf
import kotlin.collections.buildMap

class AppstoreSettingsScreenViewModel(
private val sourceDao: AppstoreSourceDao,
private val collectionDao: AppstoreCollectionDao,
private val pebbleAccount: PebbleAccount,
private val pebbleWebServices: RealPebbleWebServices,
private val uriHandler: UriHandler
private val pebbleWebServices: RealPebbleWebServices
): ViewModel() {
val pebbleLoggedIn = pebbleAccount.loggedIn
val sources = sourceDao.getAllSources()
.stateIn(viewModelScope, SharingStarted.Lazily, emptyList())
private var homeCacheFaces: List<Pair<AppstoreSource, AppStoreHome?>>? = null
Expand Down Expand Up @@ -147,11 +140,7 @@ class AppstoreSettingsScreenViewModel(

fun changeSourceEnabled(sourceId: Int, isEnabled: Boolean) {
viewModelScope.launch {
if (sources.value.firstOrNull { parseUrl(it.url)?.host?.endsWith("rebble.io") ?: false }?.id == sourceId && isEnabled && pebbleLoggedIn.value == null) {
uriHandler.openUri(REBBLE_LOGIN_URI)
} else {
sourceDao.setSourceEnabled(sourceId, isEnabled)
}
sourceDao.setSourceEnabled(sourceId, isEnabled)
}
}

Expand All @@ -176,8 +165,7 @@ class AppstoreSettingsScreenViewModel(

@Composable
fun AppstoreSettingsScreen(nav: CoreNav) {
val uriHandler = LocalUriHandler.current
val viewModel = koinViewModel<AppstoreSettingsScreenViewModel> { parametersOf(uriHandler) }
val viewModel = koinViewModel<AppstoreSettingsScreenViewModel>()
val sources by viewModel.sources.collectAsState()
val collections by viewModel.collections.collectAsState()
AppstoreSettingsScreen(
Expand Down