Skip to content

Commit

Permalink
refactor: 関数に切り出した
Browse files Browse the repository at this point in the history
  • Loading branch information
pantasystem committed Nov 30, 2023
1 parent ff0c613 commit 65977c9
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -231,63 +231,37 @@ class NoteEditorFragment : Fragment(R.layout.fragment_note_editor), EmojiSelecti
toolbarBase.apply {
setContent {
MilkteaStyleConfigApplyAndTheme(configRepository = configRepository) {
val currentUser by noteEditorViewModel.user.collectAsState()
val uiState by noteEditorViewModel.uiState.collectAsState()
val isPostAvailable by noteEditorViewModel.isPostAvailable.collectAsState()
val feedback = rememberHapticFeedback()
NoteEditorToolbar(
currentUser = currentUser,
visibility = uiState.sendToState.visibility,
validInputs = isPostAvailable,
textCount = uiState.formState.text?.let {
it.codePointCount(0, it.length)
} ?: 0,
onNavigateUpButtonClicked = {
feedback.performClickHapticFeedback()
finishOrConfirmSaveAsDraftOrDelete()
},
onAvatarIconClicked = {
feedback.performClickHapticFeedback()
accountViewModel.showSwitchDialog()
NoteEditorToolbarBinding(
noteEditorViewModel = noteEditorViewModel,
accountViewModel = accountViewModel,
onShowAlarmPermissionDescriptionDialogIfPermissionDenied = {
if (!alarmManager.canScheduleExactAlarms()) {
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.alarm_permission_description_title)
.setMessage(R.string.alarm_permission_description_message)
.setPositiveButton(android.R.string.ok) { _, _ ->
startActivity(
Intent(
ACTION_REQUEST_SCHEDULE_EXACT_ALARM
)
)
}
.setNegativeButton(android.R.string.cancel) { _, _ ->
// do nothing
}
.show()
return@NoteEditorToolbarBinding true
}
false
},
onVisibilityButtonClicked = {
feedback.performClickHapticFeedback()
onFinishOrConfirmSaveAsDraftOrDelete = ::finishOrConfirmSaveAsDraftOrDelete,
onShowVisibilitySelectionDialog = {
val dialog = VisibilitySelectionDialogV2()
dialog.show(
childFragmentManager,
VisibilitySelectionDialogV2.FRAGMENT_TAG
)
},
onScheduleButtonClicked = {
feedback.performClickHapticFeedback()
if (uiState.sendToState.schedulePostAt == null) {
// check alarm permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (!alarmManager.canScheduleExactAlarms()) {
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.alarm_permission_description_title)
.setMessage(R.string.alarm_permission_description_message)
.setPositiveButton(android.R.string.ok) { _, _ ->
startActivity(
Intent(
ACTION_REQUEST_SCHEDULE_EXACT_ALARM
)
)
}
.setNegativeButton(android.R.string.cancel) { _, _ ->
// do nothing
}
.show()
return@NoteEditorToolbar
}
}
}
noteEditorViewModel.toggleReservationAt()
},
onPostButtonClicked = {
feedback.performClickHapticFeedback()
noteEditorViewModel.post()
},
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package net.pantasystem.milktea.note.editor

import android.os.Build
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import net.pantasystem.milktea.common_android_ui.account.viewmodel.AccountViewModel
import net.pantasystem.milktea.common_compose.haptic.rememberHapticFeedback
import net.pantasystem.milktea.note.editor.viewmodel.NoteEditorViewModel

@Composable
fun NoteEditorToolbarBinding(
noteEditorViewModel: NoteEditorViewModel,
accountViewModel: AccountViewModel,
onShowAlarmPermissionDescriptionDialogIfPermissionDenied: () -> Boolean,
onFinishOrConfirmSaveAsDraftOrDelete: () -> Unit,
onShowVisibilitySelectionDialog: () -> Unit,
) {
val currentUser by noteEditorViewModel.user.collectAsState()
val uiState by noteEditorViewModel.uiState.collectAsState()
val isPostAvailable by noteEditorViewModel.isPostAvailable.collectAsState()
val feedback = rememberHapticFeedback()
NoteEditorToolbar(
currentUser = currentUser,
visibility = uiState.sendToState.visibility,
validInputs = isPostAvailable,
textCount = uiState.formState.text?.let {
it.codePointCount(0, it.length)
} ?: 0,
onNavigateUpButtonClicked = {
feedback.performClickHapticFeedback()
onFinishOrConfirmSaveAsDraftOrDelete()
},
onAvatarIconClicked = {
feedback.performClickHapticFeedback()
accountViewModel.showSwitchDialog()
},
onVisibilityButtonClicked = {
feedback.performClickHapticFeedback()
onShowVisibilitySelectionDialog()
},
onScheduleButtonClicked = {
feedback.performClickHapticFeedback()
if (uiState.sendToState.schedulePostAt == null) {
// check alarm permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (onShowAlarmPermissionDescriptionDialogIfPermissionDenied()) {
return@NoteEditorToolbar
}
}
}
noteEditorViewModel.toggleReservationAt()
},
onPostButtonClicked = {
feedback.performClickHapticFeedback()
noteEditorViewModel.post()
},
)
}

0 comments on commit 65977c9

Please sign in to comment.