1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

Editor | Refact | EditorMode as sealed class containing state (#1442)

This commit is contained in:
Evgenii Kozlov 2021-04-29 20:43:22 +03:00 committed by GitHub
parent 052b01d9e0
commit b5f5812f37
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 91 additions and 87 deletions

View file

@ -1,5 +0,0 @@
package com.anytypeio.anytype.domain.page
enum class EditorMode {
EDITING, MULTI_SELECT, SCROLL_AND_MOVE, ACTION_MODE, SEARCH
}

View file

@ -9,6 +9,14 @@ import com.anytypeio.anytype.presentation.page.selection.SelectionStateHolder
interface Editor {
sealed class Mode {
object Edit : Mode()
object Select : Mode()
object SAM : Mode()
object Action: Mode()
object Search : Mode()
}
class Storage {
val views: Store<List<BlockView>> = Store.Screen()
val focus: Store<Focus> = Store.Focus()

View file

@ -96,6 +96,7 @@ import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import timber.log.Timber
import java.util.regex.Pattern
import com.anytypeio.anytype.presentation.page.Editor.Mode as EditorMode
class PageViewModel(
private val openPage: OpenPage,
@ -141,7 +142,7 @@ class PageViewModel(
private val jobs = mutableListOf<Job>()
private var mode = EditorMode.EDITING
private var mode : EditorMode = EditorMode.Edit
private val controlPanelInteractor = Interactor(viewModelScope)
val controlPanelViewState = MutableLiveData<ControlPanelState>()
@ -1456,7 +1457,7 @@ class PageViewModel(
}
}
ActionItemType.SAM -> {
mode = EditorMode.SCROLL_AND_MOVE
mode = EditorMode.SAM
viewModelScope.launch { orchestrator.stores.focus.update(Editor.Focus.empty()) }
viewModelScope.launch { refresh() }
proceedWithSAMQuickStartSelection(id)
@ -1552,7 +1553,7 @@ class PageViewModel(
}
fun onEnterSearchModeClicked() {
mode = EditorMode.SEARCH
mode = EditorMode.Search
viewModelScope.launch { orchestrator.stores.views.update(views.toReadMode()) }
viewModelScope.launch { renderCommand.send(Unit) }
viewModelScope.launch { controlPanelInteractor.onEvent(ControlPanelMachine.Event.SearchToolbar.OnEnterSearchMode) }
@ -1563,7 +1564,7 @@ class PageViewModel(
}
fun onSearchToolbarEvent(event: SearchInDocEvent) {
if (mode != EditorMode.SEARCH) return
if (mode !is EditorMode.Search) return
when (event) {
is SearchInDocEvent.Query -> {
val query = event.query.trim()
@ -1606,7 +1607,7 @@ class PageViewModel(
searchResultScrollPosition.value = pos
}
is SearchInDocEvent.Cancel -> {
mode = EditorMode.EDITING
mode = EditorMode.Edit
val update = views.clearSearchHighlights().toEditMode()
viewModelScope.launch { orchestrator.stores.views.update(update) }
viewModelScope.launch { renderCommand.send(Unit) }
@ -1952,7 +1953,7 @@ class PageViewModel(
fun onEnterMultiSelectModeClicked() {
controlPanelInteractor.onEvent(ControlPanelMachine.Event.MultiSelect.OnEnter)
mode = EditorMode.MULTI_SELECT
mode = EditorMode.Select
viewModelScope.launch { orchestrator.stores.focus.update(Editor.Focus.empty()) }
viewModelScope.launch {
delay(DELAY_REFRESH_DOCUMENT_TO_ENTER_MULTI_SELECT_MODE)
@ -1970,7 +1971,7 @@ class PageViewModel(
fun onExitMultiSelectModeClicked() {
controlPanelInteractor.onEvent(ControlPanelMachine.Event.MultiSelect.OnExit)
mode = EditorMode.EDITING
mode = EditorMode.Edit
clearSelections()
viewModelScope.launch {
delay(DELAY_REFRESH_DOCUMENT_ON_EXIT_MULTI_SELECT_MODE)
@ -1984,7 +1985,7 @@ class PageViewModel(
}
fun onEnterScrollAndMoveClicked() {
mode = EditorMode.SCROLL_AND_MOVE
mode = EditorMode.SAM
controlPanelInteractor.onEvent(ControlPanelMachine.Event.SAM.OnEnter)
viewModelScope.sendEvent(
analytics = analytics,
@ -1998,11 +1999,11 @@ class PageViewModel(
eventName = EventsDictionary.BTN_SCROLL_MOVE_CANCEL
)
if (controlPanelViewState.value?.multiSelect?.isQuickScrollAndMoveMode == true) {
mode = EditorMode.EDITING
mode = EditorMode.Edit
controlPanelInteractor.onEvent(ControlPanelMachine.Event.SAM.OnExit)
viewModelScope.launch { refresh() }
} else {
mode = EditorMode.MULTI_SELECT
mode = EditorMode.Select
controlPanelInteractor.onEvent(ControlPanelMachine.Event.SAM.OnExit)
}
}
@ -2015,7 +2016,7 @@ class PageViewModel(
}
private fun onEnterActionMode() {
mode = EditorMode.ACTION_MODE
mode = EditorMode.Action
controlPanelInteractor.onEvent(ControlPanelMachine.Event.ReadMode.OnEnter)
viewModelScope.launch {
refresh()
@ -2023,7 +2024,7 @@ class PageViewModel(
}
private fun onExitActionMode() {
mode = EditorMode.EDITING
mode = EditorMode.Edit
controlPanelInteractor.onEvent(ControlPanelMachine.Event.ReadMode.OnExit)
viewModelScope.launch { refresh() }
}
@ -2700,7 +2701,7 @@ class PageViewModel(
fun onTextInputClicked(target: Id) {
Timber.d("onTextInputClicked: $target")
if (mode == EditorMode.MULTI_SELECT) {
if (mode is EditorMode.Select) {
onBlockMultiSelectClicked(target)
} else {
controlPanelInteractor.onEvent(ControlPanelMachine.Event.OnTextInputClicked)
@ -2857,9 +2858,9 @@ class PageViewModel(
clearSelections()
mode = if (controlPanelViewState.value?.multiSelect?.isQuickScrollAndMoveMode == true) {
EditorMode.EDITING
EditorMode.Edit
} else {
EditorMode.MULTI_SELECT
EditorMode.Select
}
controlPanelInteractor.onEvent(ControlPanelMachine.Event.SAM.OnApply)
@ -2891,9 +2892,9 @@ class PageViewModel(
clearSelections()
mode = if (controlPanelViewState.value?.multiSelect?.isQuickScrollAndMoveMode == true) {
EditorMode.EDITING
EditorMode.Edit
} else {
EditorMode.MULTI_SELECT
EditorMode.Select
}
controlPanelInteractor.onEvent(ControlPanelMachine.Event.SAM.OnApply)
@ -2929,56 +2930,56 @@ class PageViewModel(
fun onClickListener(clicked: ListenerType) = when (clicked) {
is ListenerType.Bookmark.View -> {
when (mode) {
EditorMode.EDITING -> onBookmarkClicked(clicked.item)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.item.id)
EditorMode.Edit -> onBookmarkClicked(clicked.item)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.item.id)
else -> Unit
}
}
is ListenerType.Bookmark.Placeholder -> {
when (mode) {
EditorMode.EDITING -> onBookmarkPlaceholderClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onBookmarkPlaceholderClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Bookmark.Error -> {
when (mode) {
EditorMode.EDITING -> onFailedBookmarkClicked(clicked.item)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.item.id)
EditorMode.Edit -> onFailedBookmarkClicked(clicked.item)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.item.id)
else -> Unit
}
}
is ListenerType.File.View -> {
when (mode) {
EditorMode.EDITING -> onFileClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onFileClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.File.Placeholder -> {
when (mode) {
EditorMode.EDITING -> onAddLocalFileClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onAddLocalFileClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.File.Error -> {
when (mode) {
EditorMode.EDITING -> onAddLocalFileClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onAddLocalFileClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.File.Upload -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Picture.View -> {
when (mode) {
EditorMode.EDITING -> {
EditorMode.Edit -> {
val target = blocks.find { it.id == clicked.target }
if (target != null) {
val content = target.content
@ -2993,76 +2994,76 @@ class PageViewModel(
Timber.e("Could not find target for picture")
}
}
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Picture.Placeholder -> {
when (mode) {
EditorMode.EDITING -> onAddLocalPictureClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onAddLocalPictureClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Picture.Error -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Picture.Upload -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Video.View -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Video.Placeholder -> {
when (mode) {
EditorMode.EDITING -> onAddLocalVideoClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onAddLocalVideoClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Video.Error -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Video.Upload -> {
when (mode) {
EditorMode.EDITING -> Unit
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> Unit
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.LongClick -> {
when (mode) {
EditorMode.EDITING -> onBlockLongPressedClicked(clicked.target, clicked.dimensions)
EditorMode.MULTI_SELECT -> Unit
EditorMode.Edit -> onBlockLongPressedClicked(clicked.target, clicked.dimensions)
EditorMode.Select -> Unit
else -> Unit
}
}
is ListenerType.Page -> {
when (mode) {
EditorMode.EDITING -> onPageClicked(clicked.target)
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Edit -> onPageClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Mention -> {
when (mode) {
EditorMode.EDITING -> onMentionClicked(clicked.target)
EditorMode.Edit -> onMentionClicked(clicked.target)
else -> Unit
}
}
@ -3074,25 +3075,25 @@ class PageViewModel(
}
is ListenerType.DividerClick -> {
when (mode) {
EditorMode.MULTI_SELECT -> onBlockMultiSelectClicked(clicked.target)
EditorMode.Select -> onBlockMultiSelectClicked(clicked.target)
else -> Unit
}
}
is ListenerType.Code.SelectLanguage -> {
when (mode) {
EditorMode.EDITING -> dispatch(Command.Dialog.SelectLanguage(clicked.target))
EditorMode.Edit -> dispatch(Command.Dialog.SelectLanguage(clicked.target))
else -> Unit
}
}
is ListenerType.Relation.Placeholder -> {
when (mode) {
EditorMode.EDITING -> dispatch(Command.OpenObjectRelationScreen.Add(ctx = context, target = clicked.target))
EditorMode.Edit -> dispatch(Command.OpenObjectRelationScreen.Add(ctx = context, target = clicked.target))
else -> onBlockMultiSelectClicked(clicked.target)
}
}
is ListenerType.Relation.Related -> {
when (mode) {
EditorMode.EDITING -> {
EditorMode.Edit -> {
val relation = (clicked.value as BlockView.Relation.Related).view.relationId
when (orchestrator.stores.relations.current().first { it.key == relation }.format) {
Relation.Format.SHORT_TEXT,

View file

@ -22,7 +22,6 @@ import com.anytypeio.anytype.domain.error.Error
import com.anytypeio.anytype.domain.event.interactor.InterceptEvents
import com.anytypeio.anytype.domain.page.ArchiveDocument
import com.anytypeio.anytype.domain.page.CloseBlock
import com.anytypeio.anytype.domain.page.EditorMode
import com.anytypeio.anytype.domain.page.OpenPage
import com.anytypeio.anytype.presentation.common.StateReducer
import com.anytypeio.anytype.presentation.common.SupportCommand
@ -42,6 +41,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import timber.log.Timber
import com.anytypeio.anytype.presentation.page.Editor.Mode as EditorMode
sealed class ArchiveViewState {
object Loading : ArchiveViewState()
@ -71,7 +71,7 @@ class ArchiveViewModel(
private var eventSubscription: Job? = null
private var mode = EditorMode.MULTI_SELECT
private var mode = EditorMode.Select
private val renderCommand = Proxy.Subject<Unit>()
private val renderizePipeline = Proxy.Subject<Document>()

View file

@ -4,8 +4,8 @@ import com.anytypeio.anytype.core_models.Block
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Relation
import com.anytypeio.anytype.domain.editor.Editor
import com.anytypeio.anytype.domain.page.EditorMode
import com.anytypeio.anytype.presentation.page.editor.model.BlockView
import com.anytypeio.anytype.presentation.page.Editor.Mode as EditorMode
/**
* Converts business tree-like data structures to flattened view data structures.
@ -20,7 +20,7 @@ interface BlockViewRenderer {
* @param indent current indent at this rendering node.
*/
suspend fun Map<Id, List<Block>>.render(
mode: EditorMode = EditorMode.EDITING,
mode: EditorMode = EditorMode.Edit,
root: Block,
focus: Editor.Focus,
anchor: Id,

View file

@ -7,7 +7,6 @@ import com.anytypeio.anytype.domain.cover.CoverType
import com.anytypeio.anytype.domain.editor.Editor.Cursor
import com.anytypeio.anytype.domain.editor.Editor.Focus
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.page.EditorMode
import com.anytypeio.anytype.domain.relations.Relations
import com.anytypeio.anytype.presentation.mapper.*
import com.anytypeio.anytype.presentation.page.cover.CoverColor
@ -16,6 +15,7 @@ import com.anytypeio.anytype.presentation.page.editor.model.BlockView
import com.anytypeio.anytype.presentation.page.toggle.ToggleStateHolder
import com.anytypeio.anytype.presentation.relations.view
import timber.log.Timber
import com.anytypeio.anytype.presentation.page.Editor.Mode as EditorMode
class DefaultBlockViewRenderer(
private val counter: Counter,
@ -419,7 +419,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Paragraph = BlockView.Text.Paragraph(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
marks = content.marks(details = details, urlBuilder = urlBuilder),
@ -438,7 +438,7 @@ class DefaultBlockViewRenderer(
): BlockView.Description = BlockView.Description(
id = block.id,
description = content.text.ifEmpty { null },
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
private fun headerThree(
@ -449,7 +449,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Header.Three = BlockView.Text.Header.Three(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
color = content.color,
@ -469,7 +469,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Header.Two = BlockView.Text.Header.Two(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
color = content.color,
@ -489,7 +489,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Header.One = BlockView.Text.Header.One(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
color = content.color,
@ -509,7 +509,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Checkbox = BlockView.Text.Checkbox(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
marks = content.marks(details = details, urlBuilder = urlBuilder),
@ -529,7 +529,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Bulleted = BlockView.Text.Bulleted(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
indent = indent,
@ -547,7 +547,7 @@ class DefaultBlockViewRenderer(
focus: Focus,
indent: Int
): BlockView.Code = BlockView.Code(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
backgroundColor = content.backgroundColor,
@ -565,7 +565,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Highlight = BlockView.Text.Highlight(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
isFocused = block.id == focus.id,
text = content.text,
@ -585,7 +585,7 @@ class DefaultBlockViewRenderer(
isEmpty: Boolean,
details: Block.Details
): BlockView.Text.Toggle = BlockView.Text.Toggle(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
marks = content.marks(details = details, urlBuilder = urlBuilder),
@ -607,7 +607,7 @@ class DefaultBlockViewRenderer(
indent: Int,
details: Block.Details
): BlockView.Text.Numbered = BlockView.Text.Numbered(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
number = number,
@ -634,20 +634,20 @@ class DefaultBlockViewRenderer(
imageUrl = content.image?.let { urlBuilder.image(it) },
faviconUrl = content.favicon?.let { urlBuilder.image(it) },
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
} else {
BlockView.Error.Bookmark(
id = block.id,
url = url,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
}
} ?: BlockView.MediaPlaceholder.Bookmark(
id = block.id,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
private fun divider(
@ -675,25 +675,25 @@ class DefaultBlockViewRenderer(
id = block.id,
urlBuilder = urlBuilder,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
Content.File.Type.FILE -> content.toFileView(
id = block.id,
urlBuilder = urlBuilder,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
Content.File.Type.VIDEO -> content.toVideoView(
id = block.id,
urlBuilder = urlBuilder,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
Content.File.Type.NONE -> content.toFileView(
id = block.id,
urlBuilder = urlBuilder,
indent = indent,
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ
)
else -> throw IllegalStateException("Unexpected file type: ${content.type}")
}
@ -768,7 +768,7 @@ class DefaultBlockViewRenderer(
return when(layout) {
Layout.BASIC -> {
BlockView.Title.Basic(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
emoji = details.details[root.id]?.iconEmoji?.let { name ->
@ -792,7 +792,7 @@ class DefaultBlockViewRenderer(
}
Layout.TODO -> {
BlockView.Title.Todo(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
isFocused = block.id == focus.id,
@ -805,7 +805,7 @@ class DefaultBlockViewRenderer(
}
Layout.PROFILE -> {
BlockView.Title.Profile(
mode = if (mode == EditorMode.EDITING) BlockView.Mode.EDIT else BlockView.Mode.READ,
mode = if (mode == EditorMode.Edit) BlockView.Mode.EDIT else BlockView.Mode.READ,
id = block.id,
text = content.text,
image = details.details[root.id]?.iconImage?.let { name ->