Skip to content

Commit c542f83

Browse files
leandroBorgesFerreiraLeandro Ferreira
andauthored
searching with command + f (#519)
* searching with command + f * Ktllint --------- Co-authored-by: Leandro Ferreira <[email protected]>
1 parent 4ced603 commit c542f83

6 files changed

Lines changed: 40 additions & 22 deletions

File tree

application/common_flows/wide_screen_common/src/commonMain/kotlin/io/writeopia/notes/desktop/components/App.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ fun DesktopApp(
102102
val documentsGraphInjection =
103103
DocumentsGraphInjection(repositoryInjection = SqlDelightDaoInjector.singleton())
104104

105-
val globalShellViewModel: GlobalShellViewModel = sideMenuInjector.provideSideMenuViewModel()
105+
val globalShellViewModel: GlobalShellViewModel =
106+
sideMenuInjector.provideSideMenuViewModel(keyboardEventFlow)
106107
val colorTheme by colorThemeOption.collectAsState()
107108
val navigationController: NavHostController = rememberNavController()
108109
val searchViewModel = KmpSearchInjection.singleton().provideViewModel()

application/features/account/config/ktlint/baseline.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
<baseline version="1.0">
33
<file name="src/commonMain/kotlin/io/writeopia/account/ui/SettingsDialog.kt">
44
<error line="586" column="1" source="standard:no-consecutive-blank-lines" />
5-
<error line="848" column="1" source="standard:no-consecutive-blank-lines" />
6-
<error line="934" column="58" source="standard:wrapping" />
7-
<error line="934" column="59" source="standard:argument-list-wrapping" />
85
</file>
96
<file name="src/commonMain/kotlin/io/writeopia/account/viewmodel/AccountMenuKmpViewModel.kt">
107
<error line="17" column="27" source="standard:class-signature" />

application/features/global_shell/config/ktlint/baseline.xml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<baseline version="1.0">
33
<file name="src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt">
4-
<error line="37" column="23" source="standard:class-signature" />
5-
<error line="46" column="21" source="standard:function-expression-body" />
4+
<error line="39" column="23" source="standard:class-signature" />
65
</file>
76
<file name="src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt">
8-
<error line="81" column="27" source="standard:class-signature" />
9-
<error line="81" column="27" source="standard:class-signature" />
10-
<error line="81" column="40" source="standard:class-signature" />
11-
<error line="89" column="17" source="standard:backing-property-naming" />
12-
<error line="91" column="17" source="standard:backing-property-naming" />
13-
<error line="97" column="17" source="standard:backing-property-naming" />
14-
<error line="99" column="17" source="standard:backing-property-naming" />
15-
<error line="105" column="17" source="standard:backing-property-naming" />
16-
<error line="198" column="17" source="standard:backing-property-naming" />
7+
<error line="84" column="27" source="standard:class-signature" />
8+
<error line="84" column="27" source="standard:class-signature" />
9+
<error line="84" column="40" source="standard:class-signature" />
10+
<error line="92" column="17" source="standard:backing-property-naming" />
11+
<error line="94" column="17" source="standard:backing-property-naming" />
12+
<error line="100" column="17" source="standard:backing-property-naming" />
13+
<error line="102" column="17" source="standard:backing-property-naming" />
14+
<error line="108" column="17" source="standard:backing-property-naming" />
15+
<error line="201" column="17" source="standard:backing-property-naming" />
1716
</file>
1817
<file name="src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellViewModel.kt">
1918
<error line="14" column="34" source="standard:class-signature" />

application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuInjector.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package io.writeopia.global.shell.di
22

33
import androidx.compose.runtime.Composable
44
import io.writeopia.global.shell.viewmodel.GlobalShellViewModel
5+
import io.writeopia.ui.keyboard.KeyboardEvent
6+
import kotlinx.coroutines.flow.Flow
57

68
interface SideMenuInjector {
79

810
@Composable
9-
fun provideSideMenuViewModel(): GlobalShellViewModel
11+
fun provideSideMenuViewModel(keyboardEventFlow: Flow<KeyboardEvent>? = null): GlobalShellViewModel
1012
}

application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/di/SideMenuKmpInjector.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import io.writeopia.sdk.network.injector.WriteopiaConnectionInjector
2424
import io.writeopia.sdk.persistence.core.di.RepositoryInjector
2525
import io.writeopia.sdk.repository.DocumentRepository
2626
import io.writeopia.sqldelight.di.SqlDelightDaoInjector
27+
import io.writeopia.ui.keyboard.KeyboardEvent
28+
import kotlinx.coroutines.flow.Flow
2729

2830
class SideMenuKmpInjector(
2931
private val appConfigurationInjector: AppConfigurationInjector =
@@ -43,14 +45,13 @@ class SideMenuKmpInjector(
4345
configurationRepository: ConfigurationRepository =
4446
appConfigurationInjector.provideNotesConfigurationRepository(),
4547
folderRepository: FolderRepository = FoldersInjector.singleton().provideFoldersRepository(),
46-
): NotesUseCase {
47-
return NotesUseCase.singleton(
48+
): NotesUseCase =
49+
NotesUseCase.singleton(
4850
documentRepository,
4951
configurationRepository,
5052
folderRepository,
5153
authCoreInjection.provideAuthRepository()
5254
)
53-
}
5455

5556
private fun provideWorkspaceSync(): WorkspaceSync {
5657
val documentRepo = repositoryInjection.provideDocumentRepository()
@@ -74,7 +75,7 @@ class SideMenuKmpInjector(
7475
WorkspaceApi(appConnectionInjection.provideHttpClient(), connectionInjector.baseUrl())
7576

7677
@Composable
77-
override fun provideSideMenuViewModel(): GlobalShellViewModel =
78+
override fun provideSideMenuViewModel(keyboardEventFlow: Flow<KeyboardEvent>?): GlobalShellViewModel =
7879
viewModel {
7980
GlobalShellKmpViewModel(
8081
notesUseCase = provideNotesUseCase(),
@@ -87,7 +88,8 @@ class SideMenuKmpInjector(
8788
configRepository = appConfigurationInjector.provideNotesConfigurationRepository(),
8889
authApi = authCoreInjection.provideAuthApi(),
8990
workspaceSync = provideWorkspaceSync(),
90-
workspaceApi = provideWorkspaceApi()
91+
workspaceApi = provideWorkspaceApi(),
92+
keyboardEventFlow = keyboardEventFlow
9193
)
9294
}
9395

application/features/global_shell/src/commonMain/kotlin/io/writeopia/global/shell/viewmodel/GlobalShellKmpViewModel.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ import io.writeopia.sdk.serialization.data.DocumentApi
3939
import io.writeopia.sdk.serialization.extensions.toModel
4040
import io.writeopia.sdk.serialization.json.writeopiaJson
4141
import io.writeopia.tutorials.Tutorials
42+
import io.writeopia.ui.keyboard.KeyboardEvent
4243
import kotlinx.coroutines.Dispatchers
4344
import kotlinx.coroutines.ExperimentalCoroutinesApi
45+
import kotlinx.coroutines.delay
4446
import kotlinx.coroutines.flow.Flow
4547
import kotlinx.coroutines.flow.MutableStateFlow
4648
import kotlinx.coroutines.flow.SharingStarted
@@ -77,7 +79,8 @@ class GlobalShellKmpViewModel(
7779
private val configRepository: ConfigurationRepository,
7880
private val json: Json = writeopiaJson,
7981
private val workspaceSync: WorkspaceSync,
80-
private val workspaceApi: WorkspaceApi
82+
private val workspaceApi: WorkspaceApi,
83+
private val keyboardEventFlow: Flow<KeyboardEvent>?,
8184
) : GlobalShellViewModel, ViewModel(), FolderController by folderStateController {
8285

8386
private var localUserId: String? = null
@@ -302,6 +305,20 @@ class GlobalShellKmpViewModel(
302305
init {
303306
folderStateController.initCoroutine(viewModelScope)
304307

308+
viewModelScope.launch {
309+
keyboardEventFlow
310+
?.onEach { delay(60) }
311+
?.collect { event ->
312+
when (event) {
313+
KeyboardEvent.SEARCH -> {
314+
showSearch()
315+
}
316+
317+
else -> {}
318+
}
319+
}
320+
}
321+
305322
viewModelScope.launch(Dispatchers.Default) {
306323
val userId = getUserId()
307324
val workspace = authRepository.getWorkspace() ?: Workspace.disconnectedWorkspace()

0 commit comments

Comments
 (0)