From 26c1e608ee3998602d712c278cea4a5a73cbd173 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Tue, 11 Aug 2026 20:55:10 -0300 Subject: [PATCH 01/15] JWT token and navigation --- .../notes/desktop/components/GlobalHeader.kt | 27 ++-- .../kotlin/io/writeopia/mobile/AppMobile.kt | 2 +- .../kotlin/io/writeopia/navigation/StartUp.kt | 65 -------- .../io/writeopia/desktop/MainDesktop.kt | 2 +- application/core/auth_core/build.gradle.kts | 9 ++ .../auth/core/di/AuthCoreInjectionNeo.js.kt} | 7 +- .../manager/LocalStorageAuthRepository.kt | 151 ++++++++++++++++++ .../auth/core/di/AuthCoreInjectionNeo.wasm.kt | 31 ++++ .../core/manager/InMemoryAuthRepository.kt | 92 +++++++++++ .../auth/email/EmailConfirmationScreen.kt | 26 +-- .../ForgotPasswordCodeScreen.kt | 26 +-- .../ForgotPasswordEmailScreen.kt | 26 +-- .../ForgotPasswordNewPasswordScreen.kt | 26 +-- .../io/writeopia/auth/menu/AuthMenuScreen.kt | 30 ++-- .../auth/navigation/AuthNavigation.kt | 51 ++++++ .../writeopia/auth/register/RegisterScreen.kt | 26 +-- .../auth/register/ResetPasswordScreen.kt | 25 +-- .../auth/workspace/ChooseWorkspace.kt | 26 +-- application/web/build.gradle.kts | 2 + .../jsMain/kotlin/io/writeopia/web/MainWeb.kt | 103 +++++++++--- 20 files changed, 558 insertions(+), 195 deletions(-) rename application/core/auth_core/src/{webMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.web.kt => jsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.js.kt} (73%) create mode 100644 application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/manager/LocalStorageAuthRepository.kt create mode 100644 application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.wasm.kt create mode 100644 application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/manager/InMemoryAuthRepository.kt diff --git a/application/common_flows/wide_screen_common/src/commonMain/kotlin/io/writeopia/notes/desktop/components/GlobalHeader.kt b/application/common_flows/wide_screen_common/src/commonMain/kotlin/io/writeopia/notes/desktop/components/GlobalHeader.kt index e44366b47..8dff80740 100644 --- a/application/common_flows/wide_screen_common/src/commonMain/kotlin/io/writeopia/notes/desktop/components/GlobalHeader.kt +++ b/application/common_flows/wide_screen_common/src/commonMain/kotlin/io/writeopia/notes/desktop/components/GlobalHeader.kt @@ -20,6 +20,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.notemenu.ui.screen.configuration.modifier.icon import kotlinx.coroutines.flow.StateFlow @@ -30,6 +32,8 @@ fun GlobalHeader( pathState: StateFlow>, toggleMaxScreen: () -> Unit, ) { + val platform = LocalPlatform.current + Row( modifier = Modifier.fillMaxWidth() .padding(6.dp) @@ -41,16 +45,19 @@ fun GlobalHeader( ), verticalAlignment = Alignment.CenterVertically ) { - Icon( - modifier = Modifier.icon { - if (navigationController.previousBackStackEntry != null) { - navigationController.navigateUp() - } - }, - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Navigate back", - tint = MaterialTheme.colorScheme.onBackground - ) + // Only show navigation arrows on desktop, not on web + if (platform == PlatformType.DESKTOP) { + Icon( + modifier = Modifier.icon { + if (navigationController.previousBackStackEntry != null) { + navigationController.navigateUp() + } + }, + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Navigate back", + tint = MaterialTheme.colorScheme.onBackground + ) + } PathToCurrentDirectory(pathState) } diff --git a/application/composeApp/src/commonMain/kotlin/io/writeopia/mobile/AppMobile.kt b/application/composeApp/src/commonMain/kotlin/io/writeopia/mobile/AppMobile.kt index 6ef1e7930..60cf6f696 100644 --- a/application/composeApp/src/commonMain/kotlin/io/writeopia/mobile/AppMobile.kt +++ b/application/composeApp/src/commonMain/kotlin/io/writeopia/mobile/AppMobile.kt @@ -13,6 +13,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.navArgument import io.writeopia.auth.navigation.authNavigation +import io.writeopia.auth.navigation.startScreen import io.writeopia.common.utils.ALLOW_BACKEND import io.writeopia.common.utils.Destinations import io.writeopia.common.utils.NotesNavigation @@ -26,7 +27,6 @@ import io.writeopia.features.search.di.SearchInjection import io.writeopia.model.AccentColor import io.writeopia.model.ColorThemeOption import io.writeopia.navigation.MobileNavigationViewModel -import io.writeopia.navigation.startScreen import io.writeopia.notemenu.di.NotesMenuInjection import io.writeopia.notemenu.navigation.navigateToNotes import io.writeopia.notes.desktop.components.DesktopApp diff --git a/application/composeApp/src/commonMain/kotlin/io/writeopia/navigation/StartUp.kt b/application/composeApp/src/commonMain/kotlin/io/writeopia/navigation/StartUp.kt index 9d4c622b9..635281db9 100644 --- a/application/composeApp/src/commonMain/kotlin/io/writeopia/navigation/StartUp.kt +++ b/application/composeApp/src/commonMain/kotlin/io/writeopia/navigation/StartUp.kt @@ -1,58 +1,11 @@ package io.writeopia.navigation -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.compose.composable -import io.writeopia.auth.core.manager.LoginStatus -import io.writeopia.auth.di.AuthInjection -import io.writeopia.auth.menu.AuthMenuViewModel -import io.writeopia.common.utils.Destinations -import io.writeopia.model.ColorThemeOption -import io.writeopia.model.isDarkTheme -import io.writeopia.theme.WriteopiaTheme -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.StateFlow - -fun NavGraphBuilder.startScreen( - navigationController: NavController, - colorTheme: StateFlow, - authInjection: AuthInjection = AuthInjection.singleton() -) { - composable(route = Destinations.START_APP.id) { - val authMenuViewModel: AuthMenuViewModel = - authInjection.provideAuthMenuViewModel() - - IntroScreen(colorTheme.value) - - LaunchedEffect(Unit) { -// AuthCoreInjectionNeo.singleton() -// .provideAuthRepository() -// .getAuthToken() -// ?.let(AppConnectionInjection.singleton()::setJwtToken) - - authMenuViewModel.isLoggedIn().collect { loggedIn -> - delay(300) - navigationController.navigate( - when (loggedIn) { - LoginStatus.OFFLINE_NOT_CHOSEN -> Destinations.AUTH_MENU_INNER_NAVIGATION.id - LoginStatus.CHOOSE_WORKSPACE -> Destinations.CHOOSE_WORKSPACE.id - LoginStatus.EMAIL_NOT_CONFIRMED -> Destinations.EMAIL_CONFIRM.id - LoginStatus.ONLINE, LoginStatus.OFFLINE_CHOSEN -> Destinations.MAIN_APP.id - } - ) - } - } - } -} @Composable fun ScreenLoading() { @@ -60,21 +13,3 @@ fun ScreenLoading() { CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) } } - -@Composable -fun IntroScreen(colorThemeOption: ColorThemeOption?) { - WriteopiaTheme(darkTheme = colorThemeOption.isDarkTheme()) { - Box( - modifier = Modifier - .fillMaxSize() - .background( - WriteopiaTheme.colorScheme.globalBackground - ) - ) { - CircularProgressIndicator( - modifier = Modifier.align(Alignment.Center), - color = MaterialTheme.colorScheme.onBackground - ) - } - } -} diff --git a/application/composeApp/src/jvmMain/kotlin/io/writeopia/desktop/MainDesktop.kt b/application/composeApp/src/jvmMain/kotlin/io/writeopia/desktop/MainDesktop.kt index e7bdf10c2..d5037073c 100644 --- a/application/composeApp/src/jvmMain/kotlin/io/writeopia/desktop/MainDesktop.kt +++ b/application/composeApp/src/jvmMain/kotlin/io/writeopia/desktop/MainDesktop.kt @@ -25,6 +25,7 @@ import androidx.navigation.compose.rememberNavController import io.github.kdroidfilter.platformtools.darkmodedetector.isSystemInDarkMode import io.github.kdroidfilter.platformtools.darkmodedetector.windows.setWindowsAdaptiveTitleBar import io.writeopia.auth.navigation.authNavigation +import io.writeopia.auth.navigation.startScreen import io.writeopia.common.utils.Destinations import io.writeopia.common.utils.keyboard.KeyboardCommands import io.writeopia.common.utils.keyboard.isMultiSelectionTrigger @@ -32,7 +33,6 @@ import io.writeopia.common.utils.ui.GlobalToastBox import io.writeopia.model.AccentColor import io.writeopia.model.isDarkTheme import io.writeopia.navigation.ScreenLoading -import io.writeopia.navigation.startScreen import io.writeopia.notemenu.di.UiConfigurationInjector import io.writeopia.notes.desktop.components.DesktopApp import io.writeopia.resources.CommonImages diff --git a/application/core/auth_core/build.gradle.kts b/application/core/auth_core/build.gradle.kts index 034ecc2fd..8b45f8521 100644 --- a/application/core/auth_core/build.gradle.kts +++ b/application/core/auth_core/build.gradle.kts @@ -86,11 +86,20 @@ kotlin { } } + val webMain by creating { + dependsOn(commonMain) + } + val jsMain by getting { + dependsOn(webMain) dependencies { } } + val wasmJsMain by getting { + dependsOn(webMain) + } + val androidMain by getting { dependencies { } diff --git a/application/core/auth_core/src/webMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.web.kt b/application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.js.kt similarity index 73% rename from application/core/auth_core/src/webMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.web.kt rename to application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.js.kt index 8131ccd29..adda10f44 100644 --- a/application/core/auth_core/src/webMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.web.kt +++ b/application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.js.kt @@ -2,20 +2,17 @@ package io.writeopia.auth.core.di import io.writeopia.auth.core.data.AuthApi import io.writeopia.auth.core.manager.AuthRepository -import io.writeopia.auth.core.manager.SqlDelightAuthRepository +import io.writeopia.auth.core.manager.LocalStorageAuthRepository import io.writeopia.di.AppConnectionInjection import io.writeopia.sdk.network.injector.WriteopiaConnectionInjector -import io.writeopia.sql.WriteopiaDb -import io.writeopia.sqldelight.di.WriteopiaDbInjector actual class AuthCoreInjectionNeo( - private val writeopiaDb: WriteopiaDb? = WriteopiaDbInjector.singleton()?.database, private val appConnectionInjection: AppConnectionInjection = AppConnectionInjection.singleton(), private val connectionInjector: WriteopiaConnectionInjector = WriteopiaConnectionInjector.singleton() ) { - actual fun provideAuthRepository(): AuthRepository = SqlDelightAuthRepository(writeopiaDb) + actual fun provideAuthRepository(): AuthRepository = LocalStorageAuthRepository() actual fun provideAuthApi(): AuthApi = AuthApi( diff --git a/application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/manager/LocalStorageAuthRepository.kt b/application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/manager/LocalStorageAuthRepository.kt new file mode 100644 index 000000000..a6fd33999 --- /dev/null +++ b/application/core/auth_core/src/jsMain/kotlin/io/writeopia/auth/core/manager/LocalStorageAuthRepository.kt @@ -0,0 +1,151 @@ +@file:OptIn(ExperimentalTime::class) + +package io.writeopia.auth.core.manager + +import io.writeopia.sdk.models.user.Tier +import io.writeopia.sdk.models.user.WriteopiaUser +import io.writeopia.sdk.models.utils.ResultData +import io.writeopia.sdk.models.workspace.Workspace +import kotlinx.browser.localStorage +import kotlin.time.ExperimentalTime +import kotlin.time.Instant + +internal class LocalStorageAuthRepository : AuthRepository { + + private var pendingConfirmationEmail: String? = null + private var forgotPasswordEmail: String? = null + private var forgotPasswordCode: String? = null + + override suspend fun getUser(): WriteopiaUser { + val userId = localStorage.getItem(KEY_USER_ID) ?: return WriteopiaUser.disconnectedUser() + val email = localStorage.getItem(KEY_USER_EMAIL) ?: "" + val name = localStorage.getItem(KEY_USER_NAME) ?: "" + val tierName = localStorage.getItem(KEY_USER_TIER) ?: Tier.FREE.name + + return WriteopiaUser( + id = userId, + email = email, + name = name, + tier = Tier.entries.find { it.name == tierName } ?: Tier.FREE + ) + } + + override suspend fun isLoggedIn(): Boolean = + getAuthToken().takeIf { it?.isNotEmpty() == true } != null + + override suspend fun logout(): ResultData { + localStorage.removeItem(KEY_TOKEN) + localStorage.removeItem(KEY_USER_ID) + localStorage.removeItem(KEY_USER_EMAIL) + localStorage.removeItem(KEY_USER_NAME) + localStorage.removeItem(KEY_USER_TIER) + localStorage.removeItem(KEY_USER_SELECTED) + localStorage.removeItem(KEY_WORKSPACE_ID) + localStorage.removeItem(KEY_WORKSPACE_USER_ID) + localStorage.removeItem(KEY_WORKSPACE_NAME) + localStorage.removeItem(KEY_WORKSPACE_LAST_SYNC) + localStorage.removeItem(KEY_WORKSPACE_SELECTED) + localStorage.removeItem(KEY_WORKSPACE_ROLE) + + return ResultData.Complete(true) + } + + override suspend fun saveUser(user: WriteopiaUser, selected: Boolean) { + localStorage.setItem(KEY_USER_ID, user.id) + localStorage.setItem(KEY_USER_EMAIL, user.email) + localStorage.setItem(KEY_USER_NAME, user.name) + localStorage.setItem(KEY_USER_TIER, user.tier.name) + localStorage.setItem(KEY_USER_SELECTED, selected.toString()) + } + + override suspend fun getAuthToken(): String? = + localStorage.getItem(KEY_TOKEN) + + override suspend fun saveToken(userId: String, token: String) { + localStorage.setItem(KEY_TOKEN, token) + } + + override suspend fun useOffline() { + val user = getUser() + saveUser(user.copy(id = WriteopiaUser.DISCONNECTED), true) + unselectAllWorkspaces() + saveWorkspace(Workspace.disconnectedWorkspace().copy(selected = true)) + } + + override suspend fun getWorkspace(): Workspace? { + val id = localStorage.getItem(KEY_WORKSPACE_ID) ?: return null + val userId = localStorage.getItem(KEY_WORKSPACE_USER_ID) ?: return null + val name = localStorage.getItem(KEY_WORKSPACE_NAME) ?: "" + val lastSyncMs = localStorage.getItem(KEY_WORKSPACE_LAST_SYNC)?.toLongOrNull() ?: 0L + val selected = localStorage.getItem(KEY_WORKSPACE_SELECTED)?.toBoolean() ?: false + val role = localStorage.getItem(KEY_WORKSPACE_ROLE) ?: "" + + return Workspace( + id = id, + userId = userId, + name = name, + lastSync = Instant.fromEpochMilliseconds(lastSyncMs), + selected = selected, + role = role + ) + } + + override suspend fun saveWorkspace(workspace: Workspace) { + localStorage.setItem(KEY_WORKSPACE_ID, workspace.id) + localStorage.setItem(KEY_WORKSPACE_USER_ID, workspace.userId) + localStorage.setItem(KEY_WORKSPACE_NAME, workspace.name) + localStorage.setItem(KEY_WORKSPACE_LAST_SYNC, workspace.lastSync.toEpochMilliseconds().toString()) + localStorage.setItem(KEY_WORKSPACE_SELECTED, workspace.selected.toString()) + localStorage.setItem(KEY_WORKSPACE_ROLE, workspace.role) + } + + override suspend fun unselectAllWorkspaces() { + localStorage.setItem(KEY_WORKSPACE_SELECTED, false.toString()) + } + + override suspend fun unselectAllUsers() { + localStorage.setItem(KEY_USER_SELECTED, false.toString()) + } + + override suspend fun savePendingConfirmationEmail(email: String) { + pendingConfirmationEmail = email + } + + override suspend fun getPendingConfirmationEmail(): String? = pendingConfirmationEmail + + override suspend fun clearPendingConfirmationEmail() { + pendingConfirmationEmail = null + } + + override suspend fun saveForgotPasswordEmail(email: String) { + forgotPasswordEmail = email + } + + override suspend fun getForgotPasswordEmail(): String? = forgotPasswordEmail + + override suspend fun saveForgotPasswordCode(code: String) { + forgotPasswordCode = code + } + + override suspend fun getForgotPasswordCode(): String? = forgotPasswordCode + + override suspend fun clearForgotPasswordData() { + forgotPasswordEmail = null + forgotPasswordCode = null + } + + companion object { + private const val KEY_TOKEN = "writeopia_auth_token" + private const val KEY_USER_ID = "writeopia_user_id" + private const val KEY_USER_EMAIL = "writeopia_user_email" + private const val KEY_USER_NAME = "writeopia_user_name" + private const val KEY_USER_TIER = "writeopia_user_tier" + private const val KEY_USER_SELECTED = "writeopia_user_selected" + private const val KEY_WORKSPACE_ID = "writeopia_workspace_id" + private const val KEY_WORKSPACE_USER_ID = "writeopia_workspace_user_id" + private const val KEY_WORKSPACE_NAME = "writeopia_workspace_name" + private const val KEY_WORKSPACE_LAST_SYNC = "writeopia_workspace_last_sync" + private const val KEY_WORKSPACE_SELECTED = "writeopia_workspace_selected" + private const val KEY_WORKSPACE_ROLE = "writeopia_workspace_role" + } +} diff --git a/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.wasm.kt b/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.wasm.kt new file mode 100644 index 000000000..0419a1685 --- /dev/null +++ b/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/di/AuthCoreInjectionNeo.wasm.kt @@ -0,0 +1,31 @@ +package io.writeopia.auth.core.di + +import io.writeopia.auth.core.data.AuthApi +import io.writeopia.auth.core.manager.AuthRepository +import io.writeopia.auth.core.manager.InMemoryAuthRepository +import io.writeopia.di.AppConnectionInjection +import io.writeopia.sdk.network.injector.WriteopiaConnectionInjector + +actual class AuthCoreInjectionNeo( + private val appConnectionInjection: AppConnectionInjection = AppConnectionInjection.singleton(), + private val connectionInjector: WriteopiaConnectionInjector = + WriteopiaConnectionInjector.singleton() +) { + + actual fun provideAuthRepository(): AuthRepository = InMemoryAuthRepository() + + actual fun provideAuthApi(): AuthApi = + AuthApi( + client = appConnectionInjection.provideHttpClient(), + baseUrl = connectionInjector.baseUrl() + ) + + actual companion object { + private var instance: AuthCoreInjectionNeo? = null + + actual fun singleton(): AuthCoreInjectionNeo = + instance ?: AuthCoreInjectionNeo().also { + instance = it + } + } +} diff --git a/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/manager/InMemoryAuthRepository.kt b/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/manager/InMemoryAuthRepository.kt new file mode 100644 index 000000000..d0bfbac4f --- /dev/null +++ b/application/core/auth_core/src/wasmJsMain/kotlin/io/writeopia/auth/core/manager/InMemoryAuthRepository.kt @@ -0,0 +1,92 @@ +@file:OptIn(ExperimentalTime::class) + +package io.writeopia.auth.core.manager + +import io.writeopia.sdk.models.user.WriteopiaUser +import io.writeopia.sdk.models.utils.ResultData +import io.writeopia.sdk.models.workspace.Workspace +import kotlin.time.ExperimentalTime + +internal class InMemoryAuthRepository : AuthRepository { + + private var currentUser: WriteopiaUser = WriteopiaUser.disconnectedUser() + private var currentToken: String? = null + private var currentWorkspace: Workspace? = null + private var userSelected: Boolean = false + + private var pendingConfirmationEmail: String? = null + private var forgotPasswordEmail: String? = null + private var forgotPasswordCode: String? = null + + override suspend fun getUser(): WriteopiaUser = currentUser + + override suspend fun isLoggedIn(): Boolean = + currentToken.takeIf { it?.isNotEmpty() == true } != null + + override suspend fun logout(): ResultData { + currentToken = null + currentUser = WriteopiaUser.disconnectedUser() + currentWorkspace = null + userSelected = false + return ResultData.Complete(true) + } + + override suspend fun saveUser(user: WriteopiaUser, selected: Boolean) { + currentUser = user + userSelected = selected + } + + override suspend fun getAuthToken(): String? = currentToken + + override suspend fun saveToken(userId: String, token: String) { + currentToken = token + } + + override suspend fun useOffline() { + val user = getUser() + saveUser(user.copy(id = WriteopiaUser.DISCONNECTED), true) + unselectAllWorkspaces() + saveWorkspace(Workspace.disconnectedWorkspace().copy(selected = true)) + } + + override suspend fun getWorkspace(): Workspace? = currentWorkspace + + override suspend fun saveWorkspace(workspace: Workspace) { + currentWorkspace = workspace + } + + override suspend fun unselectAllWorkspaces() { + currentWorkspace = currentWorkspace?.copy(selected = false) + } + + override suspend fun unselectAllUsers() { + userSelected = false + } + + override suspend fun savePendingConfirmationEmail(email: String) { + pendingConfirmationEmail = email + } + + override suspend fun getPendingConfirmationEmail(): String? = pendingConfirmationEmail + + override suspend fun clearPendingConfirmationEmail() { + pendingConfirmationEmail = null + } + + override suspend fun saveForgotPasswordEmail(email: String) { + forgotPasswordEmail = email + } + + override suspend fun getForgotPasswordEmail(): String? = forgotPasswordEmail + + override suspend fun saveForgotPasswordCode(code: String) { + forgotPasswordCode = code + } + + override suspend fun getForgotPasswordCode(): String? = forgotPasswordCode + + override suspend fun clearForgotPasswordData() { + forgotPasswordEmail = null + forgotPasswordCode = null + } +} diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/email/EmailConfirmationScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/email/EmailConfirmationScreen.kt index b20a11352..90d345c2c 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/email/EmailConfirmationScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/email/EmailConfirmationScreen.kt @@ -43,6 +43,8 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.resources.WrStrings import io.writeopia.sdk.models.utils.ResultData @@ -119,17 +121,19 @@ fun EmailConfirmationScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordCodeScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordCodeScreen.kt index 784b74f59..ca59e7ab3 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordCodeScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordCodeScreen.kt @@ -43,6 +43,8 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.resources.WrStrings import io.writeopia.sdk.models.utils.ResultData @@ -116,17 +118,19 @@ fun ForgotPasswordCodeScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordEmailScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordEmailScreen.kt index 49fac2ad3..4efa124ec 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordEmailScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordEmailScreen.kt @@ -41,6 +41,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.resources.WrStrings import io.writeopia.sdk.models.utils.ResultData @@ -91,17 +93,19 @@ fun ForgotPasswordEmailScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordNewPasswordScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordNewPasswordScreen.kt index deaadebe5..85cd96820 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordNewPasswordScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/forgotpassword/ForgotPasswordNewPasswordScreen.kt @@ -42,6 +42,8 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.common.utils.icons.WrIcons import io.writeopia.resources.WrStrings @@ -97,17 +99,19 @@ fun ForgotPasswordNewPasswordScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/menu/AuthMenuScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/menu/AuthMenuScreen.kt index 9cb3c9809..46dd22440 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/menu/AuthMenuScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/menu/AuthMenuScreen.kt @@ -50,6 +50,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.common.utils.icons.WrIcons import io.writeopia.resources.WrStrings @@ -129,19 +131,21 @@ fun AuthMenuScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable { - navigateUp() - } - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable { + navigateUp() + } + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/navigation/AuthNavigation.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/navigation/AuthNavigation.kt index c3f0df0ed..d79e90d19 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/navigation/AuthNavigation.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/navigation/AuthNavigation.kt @@ -5,14 +5,19 @@ package io.writeopia.auth.navigation import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import androidx.navigation.navigation +import io.writeopia.auth.core.manager.LoginStatus import io.writeopia.auth.di.AuthInjection import io.writeopia.auth.email.EmailConfirmationScreen import io.writeopia.auth.forgotpassword.ForgotPasswordCodeScreen @@ -27,9 +32,55 @@ import io.writeopia.common.utils.Destinations import io.writeopia.model.ColorThemeOption import io.writeopia.model.isDarkTheme import io.writeopia.theme.WriteopiaTheme +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.StateFlow import kotlin.time.ExperimentalTime +fun NavGraphBuilder.startScreen( + navigationController: NavController, + colorTheme: StateFlow, + authInjection: AuthInjection = AuthInjection.singleton() +) { + composable(route = Destinations.START_APP.id) { + val authMenuViewModel: AuthMenuViewModel = + authInjection.provideAuthMenuViewModel() + + IntroScreen(colorTheme.value) + + LaunchedEffect(Unit) { + authMenuViewModel.isLoggedIn().collect { loggedIn -> + delay(300) + navigationController.navigate( + when (loggedIn) { + LoginStatus.OFFLINE_NOT_CHOSEN -> Destinations.AUTH_MENU_INNER_NAVIGATION.id + LoginStatus.CHOOSE_WORKSPACE -> Destinations.CHOOSE_WORKSPACE.id + LoginStatus.EMAIL_NOT_CONFIRMED -> Destinations.EMAIL_CONFIRM.id + LoginStatus.ONLINE, LoginStatus.OFFLINE_CHOSEN -> Destinations.MAIN_APP.id + } + ) + } + } + } +} + +@Composable +fun IntroScreen(colorThemeOption: ColorThemeOption?) { + WriteopiaTheme(darkTheme = colorThemeOption.isDarkTheme()) { + Box( + modifier = Modifier + .fillMaxSize() + .background( + WriteopiaTheme.colorScheme.globalBackground + ) + ) { + CircularProgressIndicator( + modifier = Modifier.align(Alignment.Center), + color = MaterialTheme.colorScheme.onBackground + ) + } + } +} + fun NavGraphBuilder.authNavigation( navController: NavController, colorThemeOption: StateFlow, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/RegisterScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/RegisterScreen.kt index c8087b694..a05aef6e3 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/RegisterScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/RegisterScreen.kt @@ -46,6 +46,8 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.common.utils.icons.WrIcons import io.writeopia.resources.WrStrings @@ -125,17 +127,19 @@ fun RegisterScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } SnackbarHost( hostState = snackbarHostState, diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/ResetPasswordScreen.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/ResetPasswordScreen.kt index e58f427e0..f2e9bbd97 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/ResetPasswordScreen.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/register/ResetPasswordScreen.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.max import io.writeopia.auth.utils.arrowPadding import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.common.utils.icons.WrIcons import io.writeopia.resources.WrStrings @@ -100,17 +101,19 @@ fun RegisterPasswordScreen( } } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable(onClick = navigateBack) - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable(onClick = navigateBack) + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } } } diff --git a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/workspace/ChooseWorkspace.kt b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/workspace/ChooseWorkspace.kt index d544f110c..4dad5c17c 100644 --- a/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/workspace/ChooseWorkspace.kt +++ b/application/features/auth/src/commonMain/kotlin/io/writeopia/auth/workspace/ChooseWorkspace.kt @@ -35,6 +35,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import io.writeopia.auth.utils.arrowPadding +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.icons.PlatformIcons import io.writeopia.commonui.buttons.CommonButton import io.writeopia.resources.WrStrings @@ -65,17 +67,19 @@ fun BoxScope.ChooseWorkspace( } ) } - Icon( - modifier = Modifier - .align(Alignment.TopStart) - .arrowPadding() - .clip(CircleShape) - .clickable { onBackClick() } - .padding(6.dp), - imageVector = PlatformIcons.backArrowMobile, - contentDescription = "Arrow back", - tint = MaterialTheme.colorScheme.onBackground - ) + if (LocalPlatform.current != PlatformType.WEB) { + Icon( + modifier = Modifier + .align(Alignment.TopStart) + .arrowPadding() + .clip(CircleShape) + .clickable { onBackClick() } + .padding(6.dp), + imageVector = PlatformIcons.backArrowMobile, + contentDescription = "Arrow back", + tint = MaterialTheme.colorScheme.onBackground + ) + } Column( modifier = Modifier.align(Alignment.Center).padding(horizontal = 12.dp), diff --git a/application/web/build.gradle.kts b/application/web/build.gradle.kts index 401fbd5d2..49cf822f6 100644 --- a/application/web/build.gradle.kts +++ b/application/web/build.gradle.kts @@ -50,6 +50,8 @@ kotlin { implementation(project(":application:common_flows:wide_screen_common")) implementation(project(":application:features:note_menu")) implementation(project(":application:features:editor")) + implementation(project(":application:features:auth")) + implementation(project(":application:core:auth_core")) implementation(libs.compose.navigation) implementation(libs.lifecycle.viewmodel.compose) diff --git a/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt b/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt index a543dc4d2..4761d014a 100644 --- a/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt +++ b/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt @@ -1,9 +1,12 @@ package io.writeopia.web +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope @@ -12,8 +15,17 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.window.ComposeViewport import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.ExperimentalBrowserHistoryApi +import androidx.navigation.bindToBrowserNavigation +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import io.writeopia.auth.navigation.authNavigation +import io.writeopia.auth.navigation.startScreen +import io.writeopia.common.utils.ALLOW_BACKEND import io.writeopia.common.utils.Destinations +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.core.folders.api.DocumentsApi import io.writeopia.editor.features.site.ui.SiteScreen import io.writeopia.editor.features.site.viewmodel.SiteViewModel @@ -30,6 +42,7 @@ import io.writeopia.ui.image.ImageLoadConfig import io.writeopia.ui.keyboard.KeyboardEvent import kotlinx.browser.window import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filterNotNull @OptIn(ExperimentalComposeUiApi::class) fun main() { @@ -90,10 +103,12 @@ fun CreateSiteView(documentId: String) { } } +@OptIn(ExperimentalBrowserHistoryApi::class) @Composable fun CreateAppInMemory() { val coroutineScope = rememberCoroutineScope() val selectionState = MutableStateFlow(false) + val keyboardEventFlow = MutableStateFlow(null) RepositoryInjector.initialize(SqlDelightDaoInjector.singleton()) WriteopiaConnectionInjector.setBaseUrl( @@ -109,33 +124,75 @@ fun CreateAppInMemory() { val accentColor = uiConfigurationViewModel.listenForAccentColor { "disconnected_user" } + val accentColorValue by accentColor.collectAsState() + val navigationController = rememberNavController() - DesktopApp( - selectionState = selectionState, - colorThemeOption = colorTheme, - accentColorOption = accentColor, - selectColorTheme = uiConfigurationViewModel::changeColorTheme, - selectAccentColor = uiConfigurationViewModel::changeAccentColor, - coroutineScope = coroutineScope, - keyboardEventFlow = MutableStateFlow(KeyboardEvent.IDLE), - toggleMaxScreen = {}, - navigateToRegister = { - navigationController.navigate( - Destinations.AUTH_MENU_INNER_NAVIGATION.id - ) - }, - navigateToResetPassword = { - navigationController.navigate( - Destinations.AUTH_RESET_PASSWORD.id - ) - }, - navigateToChooseWorkspace = { - navigationController.navigate(Destinations.START_APP.id) { - popUpTo(navigationController.graph.startDestinationId) { inclusive = true } + // Bind navigation to browser history for back/forward button support + LaunchedEffect(navigationController) { + navigationController.bindToBrowserNavigation() + } + + CompositionLocalProvider(LocalPlatform provides PlatformType.WEB) { + WriteopiaTheme( + darkTheme = colorTheme.value.isDarkTheme(), + accentColor = accentColorValue ?: AccentColor.PURPLE + ) { + Box( + modifier = Modifier + .fillMaxSize() + .background(WriteopiaTheme.colorScheme.globalBackground) + ) { + NavHost( + navController = navigationController, + startDestination = if (ALLOW_BACKEND) { + Destinations.START_APP.id + } else { + Destinations.MAIN_APP.id + } + ) { + startScreen(navigationController, colorTheme) + + composable(route = Destinations.MAIN_APP.id) { + DesktopApp( + selectionState = selectionState, + keyboardEventFlow = keyboardEventFlow.filterNotNull(), + coroutineScope = coroutineScope, + colorThemeOption = colorTheme, + accentColorOption = accentColor, + selectColorTheme = uiConfigurationViewModel::changeColorTheme, + selectAccentColor = uiConfigurationViewModel::changeAccentColor, + toggleMaxScreen = {}, + navigateToRegister = { + navigationController.navigate( + Destinations.AUTH_MENU_INNER_NAVIGATION.id + ) + }, + navigateToResetPassword = { + navigationController.navigate( + Destinations.AUTH_RESET_PASSWORD.id + ) + }, + navigateToChooseWorkspace = { + navigationController.navigate(Destinations.START_APP.id) { + popUpTo(navigationController.graph.startDestinationId) { + inclusive = true + } + } + } + ) + } + + authNavigation( + navController = navigationController, + colorThemeOption = colorTheme + ) { + navigationController.navigate(Destinations.MAIN_APP.id) + } + } } } - ) + } } @Composable From e56e065d9c2a17e85a3dc4d3dcd96121a4ae6c89 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Wed, 12 Aug 2026 11:00:02 -0300 Subject: [PATCH 02/15] Writing documents in the webapp --- .../documents/documents/DocumentsService.kt | 23 +++++++- .../injector/WriteopiaConnectionInjector.kt | 7 ++- .../repository/InMemoryDocumentRepository.kt | 58 ++++++++++++------- .../sdk/utils/collections/SortedMapFactory.kt | 20 ++----- .../sdk/utils/collections/SortedMapFactory.kt | 20 ++----- 5 files changed, 75 insertions(+), 53 deletions(-) diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt index b774e7484..94ddf1c64 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt @@ -345,7 +345,7 @@ object DocumentsService { * 4. Process deletions * 5. Return steps newer than client's lastSync (excluding client's changes) */ - fun syncStorySteps( + suspend fun syncStorySteps( documentId: String, workspaceId: String, request: StoryStepSyncRequest, @@ -353,6 +353,27 @@ object DocumentsService { ): StoryStepSyncResponse { val serverTimestamp = Clock.System.now().toEpochMilliseconds() + // Check if document exists, create it if not + val existingDocument = writeopiaDb.getDocumentById(documentId, workspaceId) + if (existingDocument == null) { + // Extract title from the first title-type story step, or use a default + val titleStep = request.changes.firstOrNull { it.storyStep.type.name == "title" } + val title = titleStep?.storyStep?.text ?: "Untitled" + + val now = Clock.System.now() + val newDocument = Document( + id = documentId, + title = title, + content = emptyMap(), + createdAt = now, + lastUpdatedAt = now, + lastSyncedAt = now, + parentId = "root", + workspaceId = workspaceId + ) + writeopiaDb.saveDocument(newDocument) + } + // Get server steps updated after client's last sync val serverUpdatedSteps = writeopiaDb.getStoryStepsAfterTime( documentId = documentId, diff --git a/plugins/writeopia_network/src/commonMain/kotlin/io/writeopia/sdk/network/injector/WriteopiaConnectionInjector.kt b/plugins/writeopia_network/src/commonMain/kotlin/io/writeopia/sdk/network/injector/WriteopiaConnectionInjector.kt index 220bf7cb1..171fbf784 100644 --- a/plugins/writeopia_network/src/commonMain/kotlin/io/writeopia/sdk/network/injector/WriteopiaConnectionInjector.kt +++ b/plugins/writeopia_network/src/commonMain/kotlin/io/writeopia/sdk/network/injector/WriteopiaConnectionInjector.kt @@ -48,15 +48,20 @@ class WriteopiaConnectionInjector private constructor( var instance: WriteopiaConnectionInjector? = null private var baseUrl: String? = null + private var disableWebsocket: Boolean = false fun setBaseUrl(baseUrl: String) { this.baseUrl = baseUrl } + fun setDisableWebsocket(disable: Boolean) { + this.disableWebsocket = disable + } + fun singleton(): WriteopiaConnectionInjector { val thisBaseUrl = baseUrl ?: throw IllegalStateException("Base url was not set!") - return WriteopiaConnectionInjector(thisBaseUrl) + return WriteopiaConnectionInjector(thisBaseUrl, disableWebsocket = disableWebsocket) } } } diff --git a/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt b/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt index da0b41b5a..66a7b99c5 100644 --- a/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt +++ b/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt @@ -16,23 +16,23 @@ import kotlin.time.Instant class InMemoryDocumentRepository : DocumentRepository { private val documentsMap: MutableMap = mutableMapOf() - private val _documentsMapState = MutableStateFlow(documentsMap) + private val _documentsMapState = MutableStateFlow>(emptyMap()) + + // Groups documents by parentId for the menu private val documentsMapState = _documentsMapState.map { map -> - map.mapValues { (_, document) -> - listOf(document) - } + map.values.groupBy { document -> document.parentId } } override suspend fun loadDocumentsWorkspace( workspaceId: String ): List = - documentsMap.values.toList() + documentsMap.values.filter { it.workspaceId == workspaceId } override suspend fun loadDocumentsForFolder( folderId: String, workspaceId: String ): List = - documentsMap.values.toList() + documentsMap.values.filter { it.parentId == folderId && it.workspaceId == workspaceId } override suspend fun loadFavDocumentsForWorkspace( orderBy: String, @@ -47,7 +47,7 @@ class InMemoryDocumentRepository : DocumentRepository { ): List = documentsMap.values.toList() override suspend fun loadDocumentById(id: String, workspaceId: String): Document? = - documentsMap["root"] + documentsMap[id] override suspend fun loadDocumentByIds(ids: List, workspaceId: String): List = ids.mapNotNull { id -> @@ -77,37 +77,42 @@ class InMemoryDocumentRepository : DocumentRepository { } override suspend fun saveDocument(document: Document) { - documentsMap["root"] = document + documentsMap[document.id] = document + refreshDocuments() } override suspend fun saveDocumentMetadata(document: Document) { - documentsMap["root"]?.let { currentDocument -> - documentsMap["root"] = currentDocument.copy(title = document.title) + documentsMap[document.id]?.let { currentDocument -> + documentsMap[document.id] = currentDocument.copy(title = document.title) + refreshDocuments() } } override suspend fun saveStoryStep(storyStep: StoryStep, position: Double, documentId: String) { - documentsMap["root"]?.let { document -> + documentsMap[documentId]?.let { document -> val newContent = document.content + (position to storyStep) - documentsMap["root"] = document.copy(content = newContent) + documentsMap[documentId] = document.copy(content = newContent) + refreshDocuments() } } override suspend fun saveStorySteps(steps: List>, documentId: String) { - documentsMap["root"]?.let { document -> + documentsMap[documentId]?.let { document -> val newContent = document.content.toMutableMap() steps.forEach { (position, storyStep) -> newContent[position] = storyStep } - documentsMap["root"] = document.copy(content = newContent) + documentsMap[documentId] = document.copy(content = newContent) + refreshDocuments() } } override suspend fun deleteStoryStep(storyStepId: String, documentId: String) { - documentsMap["root"]?.let { document -> + documentsMap[documentId]?.let { document -> val newContent = document.content.filterNot { (_, step) -> step.id == storyStepId } .values.mapIndexed { index, step -> index.toDouble() to step }.toMap() - documentsMap["root"] = document.copy(content = newContent) + documentsMap[documentId] = document.copy(content = newContent) + refreshDocuments() } } @@ -116,14 +121,17 @@ class InMemoryDocumentRepository : DocumentRepository { override suspend fun deleteDocument(document: Document) { documentsMap.remove(document.id) + refreshDocuments() } override suspend fun deleteDocumentByIds(ids: Set) { ids.forEach(documentsMap::remove) + refreshDocuments() } override suspend fun deleteByWorkspace(userId: String) { documentsMap.clear() + refreshDocuments() } override suspend fun moveDocumentsToWorkspace(oldUserId: String, newUserId: String) { @@ -146,22 +154,30 @@ class InMemoryDocumentRepository : DocumentRepository { setFavorite(ids, false) } - private fun setFavorite(ids: Set, isFavorite: Boolean) { + private suspend fun setFavorite(ids: Set, isFavorite: Boolean) { ids.forEach { id -> - documentsMap["root"]?.copy(favorite = isFavorite)?.let { document -> - documentsMap["root"] = document + documentsMap[id]?.copy(favorite = isFavorite)?.let { document -> + documentsMap[id] = document } } + refreshDocuments() } override suspend fun deleteDocumentByFolder(folderId: String) { + val keysToRemove = documentsMap.filter { (_, doc) -> doc.parentId == folderId }.keys + keysToRemove.forEach { documentsMap.remove(it) } + refreshDocuments() } override suspend fun moveToFolder(documentId: String, parentId: String) { + documentsMap[documentId]?.let { document -> + documentsMap[documentId] = document.copy(parentId = parentId) + refreshDocuments() + } } override suspend fun refreshDocuments() { - _documentsMapState.value = documentsMap + _documentsMapState.value = documentsMap.toMap() } override suspend fun queryUnsyncedImagesSteps(): List = emptyList() @@ -175,5 +191,5 @@ class InMemoryDocumentRepository : DocumentRepository { emptyList() override suspend fun loadDocumentsByParentId(parentId: String, workspaceId: String): List = - documentsMap.values.toList() + documentsMap.values.filter { it.parentId == parentId && it.workspaceId == workspaceId } } diff --git a/writeopia/src/jsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt b/writeopia/src/jsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt index 9bc974aed..39e625a3c 100644 --- a/writeopia/src/jsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt +++ b/writeopia/src/jsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt @@ -27,23 +27,13 @@ private class SortedMutableMap, V> : MutableMap { override fun put(key: K, value: V): V? { val oldValue = delegate.remove(key) - // Insert in sorted order - val sortedEntries = delegate.entries.toMutableList() - sortedEntries.add(object : MutableMap.MutableEntry { - override val key: K = key - private var _value: V = value - override val value: V get() = _value - - override fun setValue(newValue: V): V { - val old = _value - _value = newValue - return old - } - }) - sortedEntries.sortBy { it.key } + // Copy entries to pairs to avoid ConcurrentModificationException + val sortedPairs = delegate.entries.map { it.key to it.value }.toMutableList() + sortedPairs.add(key to value) + sortedPairs.sortBy { it.first } delegate.clear() - sortedEntries.forEach { delegate[it.key] = it.value } + sortedPairs.forEach { (k, v) -> delegate[k] = v } return oldValue } diff --git a/writeopia/src/wasmJsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt b/writeopia/src/wasmJsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt index 9bc974aed..39e625a3c 100644 --- a/writeopia/src/wasmJsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt +++ b/writeopia/src/wasmJsMain/kotlin/io/writeopia/sdk/utils/collections/SortedMapFactory.kt @@ -27,23 +27,13 @@ private class SortedMutableMap, V> : MutableMap { override fun put(key: K, value: V): V? { val oldValue = delegate.remove(key) - // Insert in sorted order - val sortedEntries = delegate.entries.toMutableList() - sortedEntries.add(object : MutableMap.MutableEntry { - override val key: K = key - private var _value: V = value - override val value: V get() = _value - - override fun setValue(newValue: V): V { - val old = _value - _value = newValue - return old - } - }) - sortedEntries.sortBy { it.key } + // Copy entries to pairs to avoid ConcurrentModificationException + val sortedPairs = delegate.entries.map { it.key to it.value }.toMutableList() + sortedPairs.add(key to value) + sortedPairs.sortBy { it.first } delegate.clear() - sortedEntries.forEach { delegate[it.key] = it.value } + sortedPairs.forEach { (k, v) -> delegate[k] = v } return oldValue } From f3f34df1416ce2dde7808764ac45de1435837128 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Wed, 12 Aug 2026 16:27:55 -0300 Subject: [PATCH 03/15] ui polish --- .../notemenu/ui/screen/DesktopNotesMenu.kt | 48 +++++++++++-------- .../ui/screen/documents/NotesCardsScreen.kt | 12 ++++- .../jsMain/kotlin/io/writeopia/web/MainWeb.kt | 3 +- .../documents/documents/DocumentsService.kt | 18 +++++++ .../io/writeopia/api/geteway/Application.kt | 2 + .../repository/InMemoryDocumentRepository.kt | 18 +++---- 6 files changed, 69 insertions(+), 32 deletions(-) diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt index 041150fce..68211530e 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt @@ -28,6 +28,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.common.utils.file.directoryChooserSave import io.writeopia.common.utils.icons.WrIcons import io.writeopia.common.utils.ui.LocalToastInfo @@ -109,7 +111,10 @@ fun DesktopNotesMenu( }, moveRequest = chooseNoteViewModel::moveToFolder, modifier = Modifier.weight(1F).fillMaxHeight() - .padding(end = 10.dp, top = 20.dp), + .padding( + end = 10.dp, + top = if (LocalPlatform.current == PlatformType.WEB) 0.dp else 20.dp + ), changeIcon = chooseNoteViewModel::changeIcons, onSelection = chooseNoteViewModel::toggleSelection, sharedTransitionScope = sharedTransitionScope, @@ -137,25 +142,28 @@ fun DesktopNotesMenu( } } - DesktopNoteActionsMenu( - modifier = Modifier.align(Alignment.TopEnd).padding(top = 12.dp), - showExtraOptions = chooseNoteViewModel.editState, - showExtraOptionsRequest = chooseNoteViewModel::showEditMenu, - hideExtraOptionsRequest = chooseNoteViewModel::cancelEditMenu, - exportAsMarkdownClick = { - directoryChooserSave("")?.let(chooseNoteViewModel::directoryFilesAsMarkdown) - }, - exportAsTxtClick = { - directoryChooserSave("")?.let(chooseNoteViewModel::directoryFilesAsTxt) - }, - importClick = { - chooseNoteViewModel.loadFiles(fileChooserLoad("")) - }, - syncInProgressState = chooseNoteViewModel.syncInProgress, - onSyncLocallySelected = chooseNoteViewModel::onSyncLocallySelected, - onWriteLocallySelected = chooseNoteViewModel::onWriteLocallySelected, - onForceGraphSelected = navigateToForceGraph - ) + // Hide actions menu on web platform + if (LocalPlatform.current != PlatformType.WEB) { + DesktopNoteActionsMenu( + modifier = Modifier.align(Alignment.TopEnd).padding(top = 12.dp), + showExtraOptions = chooseNoteViewModel.editState, + showExtraOptionsRequest = chooseNoteViewModel::showEditMenu, + hideExtraOptionsRequest = chooseNoteViewModel::cancelEditMenu, + exportAsMarkdownClick = { + directoryChooserSave("")?.let(chooseNoteViewModel::directoryFilesAsMarkdown) + }, + exportAsTxtClick = { + directoryChooserSave("")?.let(chooseNoteViewModel::directoryFilesAsTxt) + }, + importClick = { + chooseNoteViewModel.loadFiles(fileChooserLoad("")) + }, + syncInProgressState = chooseNoteViewModel.syncInProgress, + onSyncLocallySelected = chooseNoteViewModel::onSyncLocallySelected, + onWriteLocallySelected = chooseNoteViewModel::onWriteLocallySelected, + onForceGraphSelected = navigateToForceGraph + ) + } val showOnboard by chooseNoteViewModel.showOnboardingState.collectAsState() diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/documents/NotesCardsScreen.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/documents/NotesCardsScreen.kt index b28ed1c76..9e90938c3 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/documents/NotesCardsScreen.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/documents/NotesCardsScreen.kt @@ -84,6 +84,8 @@ import io.writeopia.ui.drawer.preview.TextPreviewDrawer import io.writeopia.ui.drawer.preview.UnOrderedListItemPreviewDrawer import io.writeopia.ui.drawer.preview.VideoPreviewDrawer import io.writeopia.ui.model.DrawInfo +import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import kotlinx.coroutines.flow.StateFlow import org.jetbrains.compose.ui.tooling.preview.Preview @@ -835,6 +837,8 @@ private fun SharedTransitionScope.TapToStartButton( newNote: () -> Unit, modifier: Modifier = Modifier ) { + val isWeb = LocalPlatform.current == PlatformType.WEB + Box( modifier .sharedBounds( @@ -847,10 +851,14 @@ private fun SharedTransitionScope.TapToStartButton( if (isEmpty) { modifierLet.fillMaxHeight().padding(bottom = 30.dp) } else { - modifierLet.height(400.dp) + if (isWeb) { + modifierLet.height(260.dp) + } else { + modifierLet.height(400.dp) + } } } - .padding(top = 10.dp, start = 6.dp, end = 6.dp) + .padding(top = if (isWeb) 0.dp else 10.dp, start = 6.dp, end = 6.dp) .background( WriteopiaTheme.colorScheme.cardBg, MaterialTheme.shapes.large diff --git a/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt b/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt index 4761d014a..a6a0b15ab 100644 --- a/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt +++ b/application/web/src/jsMain/kotlin/io/writeopia/web/MainWeb.kt @@ -112,8 +112,9 @@ fun CreateAppInMemory() { RepositoryInjector.initialize(SqlDelightDaoInjector.singleton()) WriteopiaConnectionInjector.setBaseUrl( - "https://writeopia.io" + "http://0.0.0.0:8080" ) + WriteopiaConnectionInjector.setDisableWebsocket(true) val uiConfigurationViewModel = UiConfigurationInjector.singleton() .provideUiConfigurationViewModel() diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt index 94ddf1c64..d504c4138 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt @@ -387,6 +387,7 @@ object DocumentsService { // Track which step IDs the client is updating (to exclude from response) val clientUpdatedStepIds = mutableSetOf() + var updatedTitle: String? = null // Process client changes for (change in request.changes) { @@ -403,6 +404,23 @@ object DocumentsService { lastUpdatedAt = request.requestTimestamp ) clientUpdatedStepIds.add(clientStep.id) + + // Track title updates + if (change.storyStep.type.name == "title") { + updatedTitle = change.storyStep.text + } + } + } + + // Update document title if title step was changed + if (updatedTitle != null) { + val currentDoc = writeopiaDb.getDocumentById(documentId, workspaceId) + if (currentDoc != null && currentDoc.title != updatedTitle) { + writeopiaDb.saveDocument(currentDoc.copy( + title = updatedTitle, + lastUpdatedAt = Clock.System.now(), + lastSyncedAt = Clock.System.now() + )) } } diff --git a/backend/gateway/src/main/kotlin/io/writeopia/api/geteway/Application.kt b/backend/gateway/src/main/kotlin/io/writeopia/api/geteway/Application.kt index 751ca8b4e..b34cb956c 100644 --- a/backend/gateway/src/main/kotlin/io/writeopia/api/geteway/Application.kt +++ b/backend/gateway/src/main/kotlin/io/writeopia/api/geteway/Application.kt @@ -42,6 +42,8 @@ fun Application.installCORS() { install(CORS) { allowHost("writeopia.io", schemes = listOf("https")) allowHost("app.writeopia.io", schemes = listOf("https")) + allowHost("localhost:8081", schemes = listOf("http")) + allowHost("localhost:8082", schemes = listOf("http")) allowHeader(HttpHeaders.ContentType) allowHeader(HttpHeaders.Authorization) allowHeader("X-Admin-KEY") diff --git a/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt b/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt index 66a7b99c5..700d7094f 100644 --- a/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt +++ b/plugins/writeopia_persistence_core/src/commonMain/kotlin/io/writeopia/sdk/persistence/core/repository/InMemoryDocumentRepository.kt @@ -16,12 +16,9 @@ import kotlin.time.Instant class InMemoryDocumentRepository : DocumentRepository { private val documentsMap: MutableMap = mutableMapOf() - private val _documentsMapState = MutableStateFlow>(emptyMap()) - // Groups documents by parentId for the menu - private val documentsMapState = _documentsMapState.map { map -> - map.values.groupBy { document -> document.parentId } - } + // Holds documents grouped by parentId for reactive updates + private val _documentsGroupedByParentId = MutableStateFlow>>(emptyMap()) override suspend fun loadDocumentsWorkspace( workspaceId: String @@ -57,11 +54,14 @@ class InMemoryDocumentRepository : DocumentRepository { override suspend fun listenForDocumentsByParentId( parentId: String, workspaceId: String - ): Flow>> = documentsMapState + ): Flow>> { + refreshDocuments() + return _documentsGroupedByParentId + } override suspend fun listenForDocumentInfoById(id: String): Flow = - documentsMapState.map { documentsMap -> - documentsMap.values.flatten().find { document -> + _documentsGroupedByParentId.map { groupedDocs -> + groupedDocs.values.flatten().find { document -> document.id == id }?.info() ?: DocumentInfo.empty() } @@ -177,7 +177,7 @@ class InMemoryDocumentRepository : DocumentRepository { } override suspend fun refreshDocuments() { - _documentsMapState.value = documentsMap.toMap() + _documentsGroupedByParentId.value = documentsMap.values.groupBy { it.parentId } } override suspend fun queryUnsyncedImagesSteps(): List = emptyList() From e3fa4419762511fbc57d04b639af9b7b8dab1be9 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Thu, 13 Aug 2026 21:15:07 -0300 Subject: [PATCH 04/15] Deleting folder --- .../core/folders/api/DocumentsApi.kt | 18 +++--- .../global/shell/di/SideMenuKmpInjector.kt | 9 +++ .../viewmodel/GlobalShellKmpViewModel.kt | 4 +- .../notemenu/di/NotesMenuKmpInjection.kt | 4 +- .../viewmodel/ChooseNoteKmpViewModel.kt | 23 +++++++- .../viewmodel/FolderStateController.kt | 28 ++++++++- .../io/writeopia/sql/DocumentEntity.sq | 3 + .../documents/documents/DocumentsService.kt | 58 +++++++++++++++++-- .../documents/repository/DocumentSqlBeDao.kt | 8 +++ .../repository/DocumentsRepository.kt | 7 +++ .../api/documents/routing/DocumentsRouting.kt | 12 ++-- 11 files changed, 148 insertions(+), 26 deletions(-) diff --git a/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/api/DocumentsApi.kt b/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/api/DocumentsApi.kt index bcc9eddc1..69162ff5b 100644 --- a/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/api/DocumentsApi.kt +++ b/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/api/DocumentsApi.kt @@ -62,7 +62,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) token: String, orderBy: String = "last_updated_at" ): ResultData, List>> { - val url = "$baseUrl/api/workspace/diff" + val url = "$baseUrl/api/docs/workspace/diff" val response = client.post(url) { contentType(ContentType.Application.Json) setBody(WorkspaceDiffRequest(workspaceId, lastSync.toEpochMilliseconds(), orderBy)) @@ -105,7 +105,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.post("$baseUrl/api/workspace/folder") { + val response = client.post("$baseUrl/api/docs/workspace/folder") { contentType(ContentType.Application.Json) setBody(SendFoldersRequest(folders.map { it.toApi() }, workspaceId)) header(HttpHeaders.Authorization, "Bearer $token") @@ -125,7 +125,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.post("$baseUrl/api/workspace/$workspaceId/folder/$parentFolderId/create") { + val response = client.post("$baseUrl/api/docs/workspace/$workspaceId/folder/$parentFolderId/create") { contentType(ContentType.Application.Json) setBody(CreateFolderRequest(title)) header(HttpHeaders.Authorization, "Bearer $token") @@ -144,7 +144,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.get("$baseUrl/api/workspace/$workspaceId/folder/$folderId/contents") { + val response = client.get("$baseUrl/api/docs/workspace/$workspaceId/folder/$folderId/contents") { header(HttpHeaders.Authorization, "Bearer $token") } @@ -161,7 +161,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.delete("$baseUrl/api/workspace/$workspaceId/folder/$folderId") { + val response = client.delete("$baseUrl/api/docs/workspace/$workspaceId/folder/$folderId") { header(HttpHeaders.Authorization, "Bearer $token") } @@ -178,7 +178,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.post("$baseUrl/api/workspace/$workspaceId/document/delete") { + val response = client.post("$baseUrl/api/docs/workspace/$workspaceId/document/delete") { contentType(ContentType.Application.Json) setBody(DeleteDocumentsRequest(documentIds)) header(HttpHeaders.Authorization, "Bearer $token") @@ -198,7 +198,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.post("$baseUrl/api/workspace/$workspaceId/folder/$folderId/move") { + val response = client.post("$baseUrl/api/docs/workspace/$workspaceId/folder/$folderId/move") { contentType(ContentType.Application.Json) setBody(MoveFolderRequest(targetParentId)) header(HttpHeaders.Authorization, "Bearer $token") @@ -218,7 +218,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData { - val response = client.post("$baseUrl/api/workspace/$workspaceId/document/$documentId/favorite") { + val response = client.post("$baseUrl/api/docs/workspace/$workspaceId/document/$documentId/favorite") { contentType(ContentType.Application.Json) setBody(FavoriteDocumentRequest(favorite)) header(HttpHeaders.Authorization, "Bearer $token") @@ -236,7 +236,7 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String) workspaceId: String, token: String ): ResultData> { - val response = client.get("$baseUrl/api/workspace/$workspaceId/user/favorites") { + val response = client.get("$baseUrl/api/docs/workspace/$workspaceId/user/favorites") { header(HttpHeaders.Authorization, "Bearer $token") } diff --git a/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt b/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt index ef38b70ef..d24e80fd1 100644 --- a/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt +++ b/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt @@ -7,9 +7,12 @@ import io.writeopia.controller.OllamaConfigController import io.writeopia.core.configuration.di.AppConfigurationInjector import io.writeopia.core.configuration.di.UiConfigurationCoreInjector import io.writeopia.core.configuration.repository.ConfigurationRepository +import io.writeopia.core.folders.api.DocumentsApi import io.writeopia.core.folders.di.FoldersInjector import io.writeopia.core.folders.di.WorkspaceInjection import io.writeopia.core.folders.repository.folder.FolderRepository +import io.writeopia.di.AppConnectionInjection +import io.writeopia.sdk.network.injector.WriteopiaConnectionInjector import io.writeopia.core.folders.repository.folder.NotesUseCase import io.writeopia.di.OllamaConfigInjector import io.writeopia.di.OllamaInjection @@ -28,6 +31,8 @@ class SideMenuKmpInjector( private val repositoryInjection: RepositoryInjector = RepositoryInjector.singleton(), private val ollamaInjection: OllamaInjection = OllamaInjection.singleton(), private val workspaceInjection: WorkspaceInjection = WorkspaceInjection.singleton(), + private val appConnectionInjection: AppConnectionInjection = AppConnectionInjection.singleton(), + private val connectionInjector: WriteopiaConnectionInjector = WriteopiaConnectionInjector.singleton(), ) : SideMenuInjector, OllamaConfigInjector { private fun provideDocumentRepository(): DocumentRepository = repositoryInjection.provideDocumentRepository() @@ -44,6 +49,9 @@ class SideMenuKmpInjector( folderRepository, ) + private fun provideDocumentsApi(): DocumentsApi = + DocumentsApi(appConnectionInjection.provideHttpClient(), connectionInjector.baseUrl()) + @Composable override fun provideSideMenuViewModel(keyboardEventFlow: Flow?): GlobalShellViewModel = viewModel { @@ -53,6 +61,7 @@ class SideMenuKmpInjector( .provideUiConfigurationRepository(), authRepository = authCoreInjection.provideAuthRepository(), notesNavigationUseCase = NotesNavigationUseCase.singleton(), + documentsApi = provideDocumentsApi(), ollamaRepository = ollamaInjection.provideRepository(), authApi = authCoreInjection.provideAuthApi(), workspaceHandler = workspaceInjection.provideWorkspaceHandler(), diff --git a/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt b/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt index 1025e3f54..bea72076a 100644 --- a/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt +++ b/application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt @@ -19,6 +19,7 @@ import io.writeopia.common.utils.toList import io.writeopia.commonui.buttons.sideMenuDefaultWidth import io.writeopia.commonui.dtos.MenuItemUi import io.writeopia.commonui.extensions.toUiCard +import io.writeopia.core.folders.api.DocumentsApi import io.writeopia.core.folders.repository.folder.NotesUseCase import io.writeopia.model.ColorThemeOption import io.writeopia.model.UiConfiguration @@ -63,8 +64,9 @@ class GlobalShellKmpViewModel( private val authRepository: AuthRepository, private val authApi: AuthApi, private val notesNavigationUseCase: NotesNavigationUseCase, + private val documentsApi: DocumentsApi, private val folderStateController: FolderStateController = - FolderStateController.singleton(notesUseCase, authRepository), + FolderStateController.singleton(notesUseCase, authRepository, documentsApi), private val ollamaRepository: OllamaRepository, private val workspaceHandler: WorkspaceHandler, private val keyboardEventFlow: Flow?, diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/di/NotesMenuKmpInjection.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/di/NotesMenuKmpInjection.kt index e795142a5..fed05f678 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/di/NotesMenuKmpInjection.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/di/NotesMenuKmpInjection.kt @@ -59,7 +59,8 @@ class NotesMenuKmpInjection private constructor( private fun provideFolderStateController(): FolderStateController = FolderStateController.singleton( provideNotesUseCase(), - authCoreInjection.provideAuthRepository() + authCoreInjection.provideAuthRepository(), + provideDocumentsApi() ) private fun provideDocumentsApi() = @@ -92,6 +93,7 @@ class NotesMenuKmpInjection private constructor( notesUseCase = notesUseCase, notesConfig = notesConfig, authRepository = authCoreInjection.provideAuthRepository(), + documentsApi = provideDocumentsApi(), ollamaRepository = ollamaRepository, selectionState = selectionState, notesNavigation = notesNavigation, diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt index 2b7d434a7..6d9b4aeaf 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt @@ -16,6 +16,7 @@ import io.writeopia.common.utils.file.SaveImage import io.writeopia.commonui.extensions.toUiCard import io.writeopia.core.configuration.models.NotesArrangement import io.writeopia.core.configuration.repository.ConfigurationRepository +import io.writeopia.core.folders.api.DocumentsApi import io.writeopia.core.folders.repository.folder.NotesUseCase import io.writeopia.core.folders.sync.FolderSync import io.writeopia.models.interfaces.configuration.WorkspaceConfigRepository @@ -64,6 +65,7 @@ internal class ChooseNoteKmpViewModel( private val notesUseCase: NotesUseCase, private val notesConfig: ConfigurationRepository, private val authRepository: AuthRepository, + private val documentsApi: DocumentsApi, private val ollamaRepository: OllamaRepository? = null, private val selectionState: StateFlow, private val keyboardEventFlow: Flow, @@ -71,7 +73,8 @@ internal class ChooseNoteKmpViewModel( private val folderSync: FolderSync, private val folderController: FolderStateController = FolderStateController.singleton( notesUseCase, - authRepository + authRepository, + documentsApi ), private val notesNavigation: NotesNavigation = NotesNavigation.Root, private val previewParser: PreviewParser = PreviewParser(), @@ -335,12 +338,30 @@ internal class ChooseNoteKmpViewModel( val selected = selectedNotes.value viewModelScope.launch(Dispatchers.Default) { + // Delete locally first (optimistic delete) notesUseCase.deleteNotes(selected) clearSelection() askToDelete.value = false + + // Sync deletion to backend if logged in with premium tier + syncDeletionToBackend(selected.toList()) } } + private suspend fun syncDeletionToBackend(documentIds: List) { + if (!authRepository.isLoggedIn()) return + if (authRepository.getUser().tier != Tier.PREMIUM) return + + val workspace = authRepository.getWorkspace() ?: return + val token = authRepository.getAuthToken() ?: return + + documentsApi.deleteDocuments( + documentIds = documentIds, + workspaceId = workspace.id, + token = token + ) + } + override fun favoriteSelectedNotes() { val selectedIds = selectedNotes.value diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/FolderStateController.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/FolderStateController.kt index 8943916a3..5d021bc9d 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/FolderStateController.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/FolderStateController.kt @@ -4,6 +4,8 @@ package io.writeopia.notemenu.viewmodel import io.writeopia.auth.core.manager.AuthRepository import io.writeopia.common.utils.icons.IconChange +import io.writeopia.core.folders.api.DocumentsApi +import io.writeopia.sdk.models.user.Tier import io.writeopia.common.utils.anyNode import io.writeopia.commonui.dtos.MenuItemUi import io.writeopia.sdk.models.document.Folder @@ -22,6 +24,7 @@ import kotlin.time.ExperimentalTime class FolderStateController private constructor( private val notesUseCase: NotesUseCase, private val authRepository: AuthRepository, + private val documentsApi: DocumentsApi, ) : FolderController { private lateinit var coroutineScope: CoroutineScope @@ -59,9 +62,26 @@ class FolderStateController private constructor( coroutineScope.launch(Dispatchers.Default) { notesUseCase.deleteFolderById(id) stopEditingFolder() + + // Sync folder deletion to backend + syncFolderDeletionToBackend(id) } } + private suspend fun syncFolderDeletionToBackend(folderId: String) { + if (!authRepository.isLoggedIn()) return + if (authRepository.getUser().tier != Tier.PREMIUM) return + + val workspace = authRepository.getWorkspace() ?: return + val token = authRepository.getAuthToken() ?: return + + documentsApi.deleteFolder( + folderId = folderId, + workspaceId = workspace.id, + token = token + ) + } + override fun stopEditingFolder() { _editingFolder.value = null } @@ -148,8 +168,12 @@ class FolderStateController private constructor( companion object { var instance: FolderStateController? = null - fun singleton(notesUseCase: NotesUseCase, authRepository: AuthRepository) = - instance ?: FolderStateController(notesUseCase, authRepository) + fun singleton( + notesUseCase: NotesUseCase, + authRepository: AuthRepository, + documentsApi: DocumentsApi + ) = + instance ?: FolderStateController(notesUseCase, authRepository, documentsApi) .also { instance = it } diff --git a/backend/core/database/src/main/sqldelight/io/writeopia/sql/DocumentEntity.sq b/backend/core/database/src/main/sqldelight/io/writeopia/sql/DocumentEntity.sq index 98a32a1de..f6a95956a 100644 --- a/backend/core/database/src/main/sqldelight/io/writeopia/sql/DocumentEntity.sq +++ b/backend/core/database/src/main/sqldelight/io/writeopia/sql/DocumentEntity.sq @@ -172,6 +172,9 @@ WHERE workspace_id = ? AND deleted = FALSE; setPublished: UPDATE document_entity SET published = ?, last_updated_at = ? WHERE id = ?; +updateTitle: +UPDATE document_entity SET title = ?, last_updated_at = ?, last_synced = ? WHERE id = ?; + selectPublishedWithContentById: SELECT * FROM document_entity diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt index d504c4138..24c7c7a20 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/DocumentsService.kt @@ -10,6 +10,8 @@ import io.ktor.http.isSuccess import io.writeopia.sdk.serialization.json.SendDocumentsRequest import io.writeopia.api.documents.documents.repository.addUserFavorite import io.writeopia.api.documents.documents.repository.deleteDocumentsByFolderId +import io.writeopia.api.documents.documents.repository.documentsDiffByFolder +import io.writeopia.api.documents.documents.repository.documentsDiffByWorkspace import io.writeopia.api.documents.documents.repository.deleteDocumentsByIds import io.writeopia.api.documents.documents.repository.deleteFolder import io.writeopia.api.documents.documents.repository.deleteStoryStepById @@ -30,6 +32,7 @@ import io.writeopia.api.documents.documents.repository.getDocumentWithContentByI import io.writeopia.api.documents.documents.repository.saveDocument import io.writeopia.api.documents.documents.repository.saveFolder import io.writeopia.api.documents.documents.repository.setDocumentPublished +import io.writeopia.api.documents.documents.repository.updateDocumentTitle import io.writeopia.api.documents.documents.repository.upsertStoryStep import io.writeopia.api.documents.search.SearchDocument import io.writeopia.connection.ResultData @@ -39,6 +42,7 @@ import io.writeopia.sdk.models.document.Document import io.writeopia.sdk.models.document.Folder import io.writeopia.sdk.models.id.GenerateId import io.writeopia.sdk.models.story.StoryStep +import io.writeopia.sdk.models.story.StoryTypes import io.writeopia.sdk.serialization.extensions.toApi import io.writeopia.sdk.serialization.extensions.toModel import io.writeopia.sdk.serialization.request.StoryStepSyncRequest @@ -82,7 +86,10 @@ object DocumentsService { id: String, workspaceId: String, writeopiaDb: WriteopiaDbBackend - ): Document? = writeopiaDb.getDocumentWithContentById(id, workspaceId) + ): Document? { + val document = writeopiaDb.getDocumentWithContentById(id, workspaceId) ?: return null + return ensureTitleInSync(document) + } suspend fun getDocumentByTitle( title: String, @@ -300,6 +307,49 @@ object DocumentsService { return false } + /** + * Ensures document title metadata is in sync with the title from content. + * Returns the document with corrected title if needed. + */ + private fun ensureTitleInSync(document: Document): Document { + val titleFromContent = document.content.values.find { storyStep -> + storyStep.type.name == "title" + }?.text + + return if (titleFromContent != null && titleFromContent != document.title) { + document.copy(title = titleFromContent) + } else { + document + } + } + + /** + * Gets documents diff by folder with titles synchronized from content. + */ + suspend fun getDocumentsDiffByFolder( + folderId: String, + workspaceId: String, + lastSync: Long, + orderBy: String, + writeopiaDb: WriteopiaDbBackend + ): List { + return writeopiaDb.documentsDiffByFolder(folderId, workspaceId, lastSync, orderBy) + .map { ensureTitleInSync(it) } + } + + /** + * Gets documents diff by workspace with titles synchronized from content. + */ + suspend fun getDocumentsDiffByWorkspace( + workspaceId: String, + lastSync: Long, + orderBy: String, + writeopiaDb: WriteopiaDbBackend + ): List { + return writeopiaDb.documentsDiffByWorkspace(workspaceId, lastSync, orderBy) + .map { ensureTitleInSync(it) } + } + private suspend fun sendToAiHub(documents: List, workspaceId: String) = wrWebClient.post("${Urls.AI_HUB}/documents/") { contentType(ContentType.Application.Json) @@ -416,11 +466,7 @@ object DocumentsService { if (updatedTitle != null) { val currentDoc = writeopiaDb.getDocumentById(documentId, workspaceId) if (currentDoc != null && currentDoc.title != updatedTitle) { - writeopiaDb.saveDocument(currentDoc.copy( - title = updatedTitle, - lastUpdatedAt = Clock.System.now(), - lastSyncedAt = Clock.System.now() - )) + writeopiaDb.updateDocumentTitle(documentId, updatedTitle) } } diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentSqlBeDao.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentSqlBeDao.kt index 49b0c74fb..cb0ceed29 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentSqlBeDao.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentSqlBeDao.kt @@ -1011,6 +1011,14 @@ class DocumentSqlBeDao( documentQueries?.setPublished(published, Clock.System.now().toEpochMilliseconds(), documentId) } + /** + * Updates only the document title without affecting story steps. + */ + fun updateDocumentTitle(documentId: String, title: String) { + val now = Clock.System.now().toEpochMilliseconds() + documentQueries?.updateTitle(title, now, now, documentId) + } + /** * Checks if a document is published. */ diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentsRepository.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentsRepository.kt index 03751f222..496562263 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentsRepository.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/documents/repository/DocumentsRepository.kt @@ -184,3 +184,10 @@ fun WriteopiaDbBackend.setDocumentPublished(documentId: String, published: Boole fun WriteopiaDbBackend.isDocumentPublished(documentId: String): Boolean { return getDocumentDaoFn().isDocumentPublished(documentId) } + +/** + * Updates only the document title without affecting story steps. + */ +fun WriteopiaDbBackend.updateDocumentTitle(documentId: String, title: String) { + getDocumentDaoFn().updateDocumentTitle(documentId, title) +} diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt index 24108e20b..ecadce025 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt @@ -15,8 +15,6 @@ import io.writeopia.api.core.auth.routing.getUserId import io.writeopia.api.core.auth.utils.runIfMember import io.writeopia.api.documents.documents.DocumentsService import io.writeopia.api.documents.documents.repository.allFoldersByWorkspaceId -import io.writeopia.api.documents.documents.repository.documentsDiffByFolder -import io.writeopia.api.documents.documents.repository.documentsDiffByWorkspace import io.writeopia.api.documents.documents.repository.getDocumentsByParentId import io.writeopia.api.documents.documents.repository.getFoldersByParentId import io.writeopia.api.documents.documents.repository.getIdsByParentId @@ -407,11 +405,12 @@ fun Routing.documentsRoute( println("orderBy: ${folderDiff.orderBy}") val documents = - writeopiaDb.documentsDiffByFolder( + DocumentsService.getDocumentsDiffByFolder( folderDiff.folderId, folderDiff.workspaceId, folderDiff.lastFolderSync, - folderDiff.orderBy + folderDiff.orderBy, + writeopiaDb ) println("returning ${documents.count()} documents") @@ -442,10 +441,11 @@ fun Routing.documentsRoute( println("last sync: ${Instant.fromEpochMilliseconds(workspaceDiff.lastSync)}") println("orderBy: ${workspaceDiff.orderBy}") - val documents = writeopiaDb.documentsDiffByWorkspace( + val documents = DocumentsService.getDocumentsDiffByWorkspace( workspaceDiff.workspaceId, workspaceDiff.lastSync, - workspaceDiff.orderBy + workspaceDiff.orderBy, + writeopiaDb ) val folders = writeopiaDb.allFoldersByWorkspaceId(workspaceDiff.workspaceId) From 4902032dfeb181947efbde2b23735dd53c294600 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Fri, 14 Aug 2026 15:58:25 -0300 Subject: [PATCH 05/15] Duplicate correctly --- .../folders/repository/folder/NotesUseCase.kt | 14 ++++--- .../viewmodel/ChooseNoteKmpViewModel.kt | 38 ++++++++++++++++++- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/repository/folder/NotesUseCase.kt b/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/repository/folder/NotesUseCase.kt index 709f4ed7a..0d807e9d2 100644 --- a/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/repository/folder/NotesUseCase.kt +++ b/application/core/documents/src/commonMain/kotlin/io/writeopia/core/folders/repository/folder/NotesUseCase.kt @@ -185,9 +185,10 @@ class NotesUseCase private constructor( documentRepository.stopListeningForFoldersByParentId(id, workspaceId) } - suspend fun duplicateDocuments(ids: List, userId: String, workspaceId: String) { - duplicateNotes(ids, userId, workspaceId) + suspend fun duplicateDocuments(ids: List, userId: String, workspaceId: String): List { + val duplicatedDocuments = duplicateNotes(ids, userId, workspaceId) duplicateFolders(ids, workspaceId) + return duplicatedDocuments } suspend fun saveDocumentDb(document: Document) { @@ -233,16 +234,19 @@ class NotesUseCase private constructor( ): Flow>> = documentRepository.listenForDocumentsByParentId(parentId, workspaceId) - private suspend fun duplicateNotes(ids: List, userId: String, workspaceId: String) { - notesConfig.getOrderPreference(userId).let { orderBy -> + private suspend fun duplicateNotes(ids: List, userId: String, workspaceId: String): List { + val duplicatedDocuments = notesConfig.getOrderPreference(userId).let { orderBy -> documentRepository.loadDocumentsWithContentByIds(ids, orderBy, workspaceId) }.map { document -> document.duplicateWithNewIds() - }.forEach { document -> + } + + duplicatedDocuments.forEach { document -> documentRepository.saveDocument(document) } documentRepository.refreshDocuments() + return duplicatedDocuments } private suspend fun duplicateFolders(ids: List, workspaceId: String) { diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt index 6d9b4aeaf..862616dc6 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/ChooseNoteKmpViewModel.kt @@ -326,11 +326,13 @@ internal class ChooseNoteKmpViewModel( override fun copySelectedNotes() { viewModelScope.launch(Dispatchers.Default) { - notesUseCase.duplicateDocuments( + val duplicatedDocuments = notesUseCase.duplicateDocuments( selectedNotes.value.toList(), getUserId(), getWorkspaceId() ) + + syncDocumentsToBackend(duplicatedDocuments) } } @@ -362,6 +364,37 @@ internal class ChooseNoteKmpViewModel( ) } + private suspend fun syncDocumentsToBackend(documents: List) { + if (!authRepository.isLoggedIn()) return + if (authRepository.getUser().tier != Tier.PREMIUM) return + + val workspace = authRepository.getWorkspace() ?: return + val token = authRepository.getAuthToken() ?: return + + documentsApi.sendDocuments( + documents = documents, + workspaceId = workspace.id, + token = token + ) + } + + private suspend fun syncFavoriteToBackend(documentIds: Set, favorite: Boolean) { + if (!authRepository.isLoggedIn()) return + if (authRepository.getUser().tier != Tier.PREMIUM) return + + val workspace = authRepository.getWorkspace() ?: return + val token = authRepository.getAuthToken() ?: return + + documentIds.forEach { documentId -> + documentsApi.favoriteDocument( + documentId = documentId, + favorite = favorite, + workspaceId = workspace.id, + token = token + ) + } + } + override fun favoriteSelectedNotes() { val selectedIds = selectedNotes.value @@ -374,8 +407,10 @@ internal class ChooseNoteKmpViewModel( viewModelScope.launch(Dispatchers.Default) { if (allFavorites) { notesUseCase.unFavoriteDocuments(selectedIds) + syncFavoriteToBackend(selectedIds, favorite = false) } else { notesUseCase.favoriteDocuments(selectedIds) + syncFavoriteToBackend(selectedIds, favorite = true) } } } @@ -430,6 +465,7 @@ internal class ChooseNoteKmpViewModel( Result.failure(Exception("Failed to parse AI response")) } else { notesUseCase.saveDocumentDb(document) + syncDocumentsToBackend(listOf(document)) Result.success(Unit) } } From 54dc6272ac5f85617c3ff75a79a092b7ce1eb733 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Fri, 14 Aug 2026 16:10:57 -0300 Subject: [PATCH 06/15] Update UserFavoriteEntity.sq --- .../src/main/sqldelight/io/writeopia/sql/UserFavoriteEntity.sq | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/core/database/src/main/sqldelight/io/writeopia/sql/UserFavoriteEntity.sq b/backend/core/database/src/main/sqldelight/io/writeopia/sql/UserFavoriteEntity.sq index b8c605415..2418361c1 100644 --- a/backend/core/database/src/main/sqldelight/io/writeopia/sql/UserFavoriteEntity.sq +++ b/backend/core/database/src/main/sqldelight/io/writeopia/sql/UserFavoriteEntity.sq @@ -23,7 +23,8 @@ WHERE user_id = ? AND document_id = ?; insert: INSERT INTO user_favorite_entity(user_id, document_id, workspace_id, created_at) -VALUES (?, ?, ?, ?); +VALUES (?, ?, ?, ?) +ON CONFLICT (user_id, document_id) DO NOTHING; delete: DELETE FROM user_favorite_entity From d983e6b0d0769588b054006421b3a8c92c4e01f5 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Fri, 14 Aug 2026 16:35:16 -0300 Subject: [PATCH 07/15] Update DocumentsRouting.kt --- .../api/documents/routing/DocumentsRouting.kt | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt b/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt index ecadce025..49bbf17e5 100644 --- a/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt +++ b/backend/documents/documents/src/main/java/io/writeopia/api/documents/routing/DocumentsRouting.kt @@ -220,11 +220,22 @@ fun Routing.documentsRoute( val folders = writeopiaDb.getFoldersByParentId(folderId) val documents = writeopiaDb.getDocumentsByParentId(folderId) + // Get user's favorite document IDs + val userFavoriteIds = DocumentsService.getUserFavoriteDocumentIds( + userId, workspaceId, writeopiaDb + ).toSet() + + // Set favorite status on each document + val documentsWithFavorites = documents.map { doc -> + val isFavorite = userFavoriteIds.contains(doc.id) + doc.copy(favorite = isFavorite) + } + call.respond( status = HttpStatusCode.OK, message = FolderContentResponse( folders = folders.map { it.toApi() }, - documents = documents.map { it.toApi() } + documents = documentsWithFavorites.map { it.toApi() } ) ) } catch (e: Exception) { @@ -413,11 +424,19 @@ fun Routing.documentsRoute( writeopiaDb ) - println("returning ${documents.count()} documents") + // Get user's favorite document IDs + val userFavoriteIds = DocumentsService.getUserFavoriteDocumentIds( + userId, workspaceId, writeopiaDb + ).toSet() + // Set favorite status on each document + val documentsWithFavorites = documents.map { doc -> + doc.copy(favorite = userFavoriteIds.contains(doc.id)) + } + call.respond( status = HttpStatusCode.OK, - message = documents.map { document -> document.toApi() } + message = documentsWithFavorites.map { document -> document.toApi() } ) } catch (e: Exception) { call.respond( From 705bacf371329dbdb8d535a44cf53078fb0567b2 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Fri, 14 Aug 2026 19:14:05 -0300 Subject: [PATCH 08/15] Removing summary for webapp --- .../io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt | 2 +- .../ui/screen/configuration/molecules/NotesSelectionMenu.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt index 68211530e..452ba3e6c 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/DesktopNotesMenu.kt @@ -232,7 +232,7 @@ fun DesktopNotesMenu( onDelete = chooseNoteViewModel::requestPermissionToDeleteSelection, onCopy = chooseNoteViewModel::copySelectedNotes, onFavorite = chooseNoteViewModel::favoriteSelectedNotes, - onSummary = chooseNoteViewModel::showAiOptions, + onSummary = if (ollamaConfigController != null) chooseNoteViewModel::showAiOptions else null, onClose = chooseNoteViewModel::clearSelection, shape = RoundedCornerShape(CornerSize(16.dp)), exitAnimationOffset = 2.3F, diff --git a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/configuration/molecules/NotesSelectionMenu.kt b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/configuration/molecules/NotesSelectionMenu.kt index 765230cd1..ffae811e3 100644 --- a/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/configuration/molecules/NotesSelectionMenu.kt +++ b/application/features/note_menu/src/commonMain/kotlin/io/writeopia/notemenu/ui/screen/configuration/molecules/NotesSelectionMenu.kt @@ -35,7 +35,7 @@ internal fun NotesSelectionMenu( onDelete: () -> Unit, onCopy: () -> Unit, onFavorite: () -> Unit, - onSummary: () -> Unit, + onSummary: (() -> Unit)? = null, onClose: () -> Unit, shape: Shape = RoundedCornerShape( CornerSize(16.dp), @@ -98,7 +98,7 @@ internal fun NotesSelectionMenu( val currentPlatform = LocalPlatform.current - if (currentPlatform.isDesktop()) { + if (currentPlatform.isDesktop() && onSummary != null) { Icon( modifier = Modifier .clickable(onClick = onSummary) From 012ac7137c57f30bda60eb9662671cc9c85530dd Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Fri, 14 Aug 2026 21:04:53 -0300 Subject: [PATCH 09/15] removing color --- .../io/writeopia/commonui/SettingsPanel.kt | 3 +- .../account/ui/SettingsAppearanceScreen.kt | 67 ------------------- .../io/writeopia/account/ui/SettingsDialog.kt | 16 +++-- 3 files changed, 12 insertions(+), 74 deletions(-) diff --git a/application/core/common_ui/src/commonMain/kotlin/io/writeopia/commonui/SettingsPanel.kt b/application/core/common_ui/src/commonMain/kotlin/io/writeopia/commonui/SettingsPanel.kt index 2f8b81789..1260ee419 100644 --- a/application/core/common_ui/src/commonMain/kotlin/io/writeopia/commonui/SettingsPanel.kt +++ b/application/core/common_ui/src/commonMain/kotlin/io/writeopia/commonui/SettingsPanel.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import io.writeopia.common.utils.ALLOW_BACKEND import io.writeopia.common.utils.configuration.LocalPlatform +import io.writeopia.common.utils.configuration.PlatformType import io.writeopia.resources.WrStrings import io.writeopia.theme.WriteopiaTheme @@ -56,7 +57,7 @@ fun SettingsPanel( pageState = page } - if (currentPlatform.isDesktop()) { + if (currentPlatform == PlatformType.DESKTOP) { SettingsButton("AI", SettingsPage.AI, pageState) { page -> pageState = page } diff --git a/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsAppearanceScreen.kt b/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsAppearanceScreen.kt index 9da8edec4..b6c7da68e 100644 --- a/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsAppearanceScreen.kt +++ b/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsAppearanceScreen.kt @@ -221,73 +221,6 @@ private fun AccentColorOptions( isSelected = selectedColor == AccentColor.ORANGE, onClick = { selectAccentColor(AccentColor.ORANGE) } ) - - Spacer(modifier = Modifier.width(spaceWidth)) - - DynamicColorOption( - isSelected = selectedColor == AccentColor.DYNAMIC, - onClick = { selectAccentColor(AccentColor.DYNAMIC) } - ) - } - } -} - -@Composable -private fun RowScope.DynamicColorOption( - isSelected: Boolean, - onClick: () -> Unit -) { - val typography = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Bold) - val textColor = WriteopiaTheme.colorScheme.textLight - - val iconSize by animateDpAsState( - targetValue = if (isSelected) 30.dp else 24.dp, - animationSpec = spring( - dampingRatio = Spring.DampingRatioMediumBouncy, - stiffness = Spring.StiffnessMediumLow - ) - ) - - val weight by animateFloatAsState( - targetValue = if (isSelected) 1.5f else 1f, - animationSpec = spring( - dampingRatio = Spring.DampingRatioMediumBouncy, - stiffness = Spring.StiffnessMediumLow - ) - ) - - val iconTint = if (isSelected) { - MaterialTheme.colorScheme.primary - } else { - WriteopiaTheme.colorScheme.tintLight - } - - Box( - modifier = Modifier - .clip(MaterialTheme.shapes.large) - .background(WriteopiaTheme.colorScheme.optionsSelector) - .clickable(onClick = onClick) - .fillMaxHeight() - .weight(weight) - ) { - Column( - modifier = Modifier.align(Alignment.Center), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Icon( - modifier = Modifier.size(iconSize), - imageVector = WrIcons.dynamicColor, - contentDescription = WrStrings.dynamicColor(), - tint = iconTint - ) - - Spacer(modifier = Modifier.height(4.dp)) - - Text( - WrStrings.dynamicColor(), - style = typography, - color = textColor - ) } } } diff --git a/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsDialog.kt b/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsDialog.kt index b60eff768..36958162b 100644 --- a/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsDialog.kt +++ b/application/features/account/src/commonMain/kotlin/io/writeopia/account/ui/SettingsDialog.kt @@ -1352,12 +1352,16 @@ private fun AccentColorOptions( onClick = { selectAccentColor(AccentColor.ORANGE) } ) - Spacer(modifier = Modifier.width(spaceWidth)) - - DynamicColorOption( - isSelected = selectedColor == AccentColor.DYNAMIC, - onClick = { selectAccentColor(AccentColor.DYNAMIC) } - ) + // Only show Dynamic color option on mobile (not on web) + val currentPlatform = LocalPlatform.current + if (currentPlatform.isMobile()) { + Spacer(modifier = Modifier.width(spaceWidth)) + + DynamicColorOption( + isSelected = selectedColor == AccentColor.DYNAMIC, + onClick = { selectAccentColor(AccentColor.DYNAMIC) } + ) + } } } } From 187b41da2d12c6e3217ddff0e32dd8011ceb7ee0 Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Sat, 15 Aug 2026 11:17:38 -0300 Subject: [PATCH 10/15] Fonts --- .../composeResources/font/Roboto-Regular.ttf | Bin 0 -> 488584 bytes .../kotlin/io/writeopia/resources/Fonts.kt | 21 +++++++++++++ application/core/theme/build.gradle.kts | 2 ++ .../kotlin/io/writeopia/theme/Theme.kt | 2 +- .../kotlin/io/writeopia/theme/Type.kt | 28 ++++++++++++++++++ .../src/jsMain/kotlin/resources/index.html | 1 + .../wasmJsMain/kotlin/resources/index.html | 1 + .../api/documents/routing/DocumentsRouting.kt | 2 +- 8 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 application/core/resources/src/commonMain/composeResources/font/Roboto-Regular.ttf create mode 100644 application/core/resources/src/commonMain/kotlin/io/writeopia/resources/Fonts.kt diff --git a/application/core/resources/src/commonMain/composeResources/font/Roboto-Regular.ttf b/application/core/resources/src/commonMain/composeResources/font/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5522a368d9072fd88c299916e61fcff369949061 GIT binary patch literal 488584 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 Y;6XU#ILQS8g4^Zm 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�uP5<4L&6))V{L_N$NJ(tsg|m8z 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 literal 0 HcmV?d00001 diff --git a/application/core/resources/src/commonMain/kotlin/io/writeopia/resources/Fonts.kt b/application/core/resources/src/commonMain/kotlin/io/writeopia/resources/Fonts.kt new file mode 100644 index 000000000..f24c2587e --- /dev/null +++ b/application/core/resources/src/commonMain/kotlin/io/writeopia/resources/Fonts.kt @@ -0,0 +1,21 @@ +package io.writeopia.resources + +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import org.jetbrains.compose.resources.Font +import org.jetbrains.compose.resources.FontResource +import writeopia.application.core.resources.generated.resources.Res +import writeopia.application.core.resources.generated.resources.Roboto_Regular + +object Fonts { + + val robotoRegular: FontResource + get() = Res.font.Roboto_Regular + + val robotoFontFamily: FontFamily + @Composable + get() = FontFamily( + Font(robotoRegular, weight = FontWeight.Normal) + ) +} diff --git a/application/core/theme/build.gradle.kts b/application/core/theme/build.gradle.kts index bd77c03da..fd22257b0 100644 --- a/application/core/theme/build.gradle.kts +++ b/application/core/theme/build.gradle.kts @@ -53,8 +53,10 @@ kotlin { dependencies { implementation(project(":application:core:persistence_sqldelight")) implementation(project(":application:core:utils")) + implementation(project(":application:core:resources")) implementation(compose.material3) + implementation(compose.components.resources) implementation(libs.lifecycle.viewmodel.compose) implementation(libs.platformtools.darkmodedetector) } diff --git a/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Theme.kt b/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Theme.kt index dfa4ddff0..e5db958b5 100644 --- a/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Theme.kt +++ b/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Theme.kt @@ -140,7 +140,7 @@ fun WriteopiaTheme( CompositionLocalProvider(LocalWriteopiaColors provides writeopiaColors) { MaterialTheme( colorScheme = colors, - typography = Typography, + typography = robotoTypography(), shapes = Shapes, content = content ) diff --git a/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Type.kt b/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Type.kt index 3640687c8..a55a2a00c 100644 --- a/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Type.kt +++ b/application/core/theme/src/commonMain/kotlin/io/writeopia/theme/Type.kt @@ -1,10 +1,13 @@ package io.writeopia.theme import androidx.compose.material3.Typography +import androidx.compose.runtime.Composable import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.sp +import io.writeopia.resources.Fonts +import org.jetbrains.compose.resources.Font val Typography = Typography( bodyMedium = TextStyle( @@ -13,3 +16,28 @@ val Typography = Typography( fontSize = 16.sp, ), ) + +@Composable +fun robotoTypography(): Typography { + val robotoFamily = FontFamily( + Font(Fonts.robotoRegular, weight = FontWeight.Normal) + ) + + return Typography( + displayLarge = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + displayMedium = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + displaySmall = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + headlineLarge = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + headlineMedium = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + headlineSmall = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + titleLarge = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + titleMedium = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Medium), + titleSmall = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Medium), + bodyLarge = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + bodyMedium = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal, fontSize = 16.sp), + bodySmall = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Normal), + labelLarge = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Medium), + labelMedium = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Medium), + labelSmall = TextStyle(fontFamily = robotoFamily, fontWeight = FontWeight.Medium), + ) +} diff --git a/application/web/src/jsMain/kotlin/resources/index.html b/application/web/src/jsMain/kotlin/resources/index.html index 87abec1ed..709106528 100644 --- a/application/web/src/jsMain/kotlin/resources/index.html +++ b/application/web/src/jsMain/kotlin/resources/index.html @@ -5,6 +5,7 @@ Writeopia +