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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@ package io.writeopia.editor.features.editor.ui
import androidx.compose.foundation.gestures.animateScrollBy
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontFamily
import io.writeopia.editor.configuration.ui.DrawConfigFactory
import io.writeopia.editor.features.editor.viewmodel.NoteEditorViewModel
Expand Down Expand Up @@ -57,8 +55,6 @@ internal fun TextEditor(
}
}
}

val clipShape = MaterialTheme.shapes.medium
val isEditable by noteEditorViewModel.isEditable.collectAsState()

WriteopiaEditor(
Expand All @@ -68,12 +64,10 @@ internal fun TextEditor(
keyFn = keyFn,
drawers = drawersFactory.create(
noteEditorViewModel.writeopiaManager,
defaultBorder = clipShape,
onHeaderClick = noteEditorViewModel::onHeaderClick,
editable = isEditable,
aiExplanation = WrStrings.aiExplanation(),
isDarkTheme = isDarkTheme,
groupsBackgroundColor = Color.Transparent,
drawConfig = DrawConfigFactory.getDrawConfig(),
fontFamily = fontFamily,
generateSection = noteEditorViewModel::aiSection,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ Add the project in your gradle file:

```kotlin
implementation("io.writeopia:writeopia-models:[version]")
implementation("io.writeopia:writeopia-core:[version]"
// Add the core functionality
implementation("io.writeopia:writeopia-core:[version]")
// Add the UI for the editor
implementation("io.writeopia:writeopia-ui:[version]")
```

Check releases for [latest](https://github.com/leandroBorgesFerreira/writeopia/releases) version.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp
Expand All @@ -28,11 +26,9 @@ object DefaultDrawersAndroid : DrawersFactory {
@Composable
override fun create(
manager: WriteopiaStateManager,
defaultBorder: Shape,
editable: Boolean,
aiExplanation: String,
isDarkTheme: Boolean,
groupsBackgroundColor: Color,
onHeaderClick: () -> Unit,
drawConfig: DrawConfig,
fontFamily: FontFamily?,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package io.writeopia.ui.drawer.factory

import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.text.font.FontFamily
import io.writeopia.sdk.models.files.ExternalFile
import io.writeopia.ui.drawer.StoryStepDrawer
Expand All @@ -14,16 +12,14 @@ interface DrawersFactory {
@Composable
fun create(
manager: WriteopiaStateManager,
defaultBorder: Shape,
editable: Boolean,
aiExplanation: String,
isDarkTheme: Boolean,
groupsBackgroundColor: Color,
onHeaderClick: () -> Unit,
drawConfig: DrawConfig,
fontFamily: FontFamily?,
generateSection: (Int) -> Unit,
receiveExternalFile: (List<ExternalFile>, Int) -> Unit,
onDocumentLinkClick: (String) -> Unit,
editable: Boolean = true,
aiExplanation: String = "AI Generated",
isDarkTheme: Boolean = false,
onHeaderClick: () -> Unit = {},
drawConfig: DrawConfig = DrawConfig(),
fontFamily: FontFamily? = null,
generateSection: (Int) -> Unit = {},
receiveExternalFile: (List<ExternalFile>, Int) -> Unit = { _, _ -> },
onDocumentLinkClick: (String) -> Unit = {},
): Map<Int, StoryStepDrawer>
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import io.writeopia.sdk.models.story.StoryStep
import io.writeopia.sdk.models.story.StoryTypes
import io.writeopia.sdk.models.story.Tag
import io.writeopia.sdk.models.story.TagInfo
import io.writeopia.sdk.models.user.WriteopiaUser
import io.writeopia.sdk.normalization.builder.StepsMapNormalizationBuilder
import io.writeopia.sdk.repository.DocumentRepository
import io.writeopia.sdk.repository.UserRepository
Expand All @@ -40,6 +41,7 @@ import io.writeopia.ui.model.TextInput
import io.writeopia.ui.modifiers.StepsModifier
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
Expand Down Expand Up @@ -70,7 +72,7 @@ class WriteopiaStateManager(
private val dispatcher: CoroutineDispatcher,
private val coroutineScope: CoroutineScope = CoroutineScope(EmptyCoroutineContext),
private val backStackManager: SnapshotBackstackManager,
private val userRepository: UserRepository,
private val userRepository: UserRepository?,
private val writeopiaManager: WriteopiaManager,
val selectionState: StateFlow<Boolean>,
private val keyboardEventFlow: Flow<KeyboardEvent>,
Expand Down Expand Up @@ -1061,7 +1063,8 @@ class WriteopiaStateManager(
}
}

private suspend fun getUserId(): String = userRepository.getUser().id
private suspend fun getUserId(): String =
userRepository?.getUser()?.id ?: WriteopiaUser.disconnectedUser().id

/**
* Moves the focus to the next available [StoryStep] if it can't find a step to focus, it
Expand Down Expand Up @@ -1271,7 +1274,7 @@ class WriteopiaStateManager(
companion object {
fun create(
writeopiaManager: WriteopiaManager,
dispatcher: CoroutineDispatcher,
dispatcher: CoroutineDispatcher = Dispatchers.Unconfined,
documentRepository: DocumentRepository? = null,
selectionState: StateFlow<Boolean> = MutableStateFlow(false),
keyboardEventFlow: Flow<KeyboardEvent?> = MutableStateFlow(null),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.input.pointer.PointerEventType
import androidx.compose.ui.input.pointer.onPointerEvent
import androidx.compose.ui.text.font.FontFamily
Expand All @@ -27,21 +26,15 @@ import io.writeopia.ui.icons.WrSdkIcons
import io.writeopia.ui.manager.WriteopiaStateManager
import io.writeopia.ui.model.DrawConfig

private const val LARGE_START_PADDING = 26
private const val MEDIUM_START_PADDING = 12
private const val SMALL_START_PADDING = 4

object DefaultDrawersJs : DrawersFactory {

@OptIn(ExperimentalComposeUiApi::class)
@Composable
override fun create(
manager: WriteopiaStateManager,
defaultBorder: Shape,
editable: Boolean,
aiExplanation: String,
isDarkTheme: Boolean,
groupsBackgroundColor: Color,
onHeaderClick: () -> Unit,
drawConfig: DrawConfig,
fontFamily: FontFamily?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.input.pointer.PointerEventType
import androidx.compose.ui.input.pointer.onPointerEvent
import androidx.compose.ui.text.font.FontFamily
Expand All @@ -36,11 +35,9 @@ object DefaultDrawersDesktop : DrawersFactory {
@Composable
override fun create(
manager: WriteopiaStateManager,
defaultBorder: Shape,
editable: Boolean,
aiExplanation: String,
isDarkTheme: Boolean,
groupsBackgroundColor: Color,
onHeaderClick: () -> Unit,
drawConfig: DrawConfig,
fontFamily: FontFamily?,
Expand Down