Skip to content

Commit b432122

Browse files
committed
Create sample timers in the UI layer
1 parent 5406890 commit b432122

10 files changed

Lines changed: 109 additions & 221 deletions

File tree

‎app-timer-edit/src/main/java/xyz/aprildown/timer/app/timer/edit/EditActivity.kt‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ import xyz.aprildown.timer.domain.entities.toScreenAction
5656
import xyz.aprildown.timer.domain.entities.toVibrationAction
5757
import xyz.aprildown.timer.domain.entities.toVoiceAction
5858
import xyz.aprildown.timer.domain.usecases.Fruit
59-
import xyz.aprildown.timer.domain.usecases.timer.SampleTimerProvider
6059
import xyz.aprildown.timer.domain.utils.Constants
6160
import xyz.aprildown.timer.presentation.edit.EditViewModel
6261
import xyz.aprildown.timer.presentation.stream.accumulateTime
@@ -191,9 +190,9 @@ class EditActivity : BaseActivity(),
191190
.setItems(RBase.array.sample_timers) { _, which ->
192191
userLeave {
193192
when (which) {
194-
0 -> viewModel.loadSampleTimer(SampleTimerProvider.TEMPLATE_ONE_STAGE)
195-
1 -> viewModel.loadSampleTimer(SampleTimerProvider.TEMPLATE_TWO_STAGES)
196-
2 -> viewModel.loadSampleTimer(SampleTimerProvider.TEMPLATE_THREE_STAGES)
193+
0 -> viewModel.loadSampleTimer(getOneStageTimer())
194+
1 -> viewModel.loadSampleTimer(getTwoStagesTimer())
195+
2 -> viewModel.loadSampleTimer(getThreeStagesTimer())
197196
}
198197
}
199198
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package xyz.aprildown.timer.app.timer.edit
2+
3+
import android.content.Context
4+
import androidx.annotation.StringRes
5+
import xyz.aprildown.timer.domain.entities.BehaviourEntity
6+
import xyz.aprildown.timer.domain.entities.BehaviourType
7+
import xyz.aprildown.timer.domain.entities.StepEntity
8+
import xyz.aprildown.timer.domain.entities.StepType
9+
import xyz.aprildown.timer.domain.entities.TimerEntity
10+
import xyz.aprildown.timer.app.base.R as RBase
11+
12+
internal fun Context.getOneStageTimer(): TimerEntity = TimerEntity(
13+
id = TimerEntity.NEW_ID,
14+
name = getString(RBase.string.sample_timer_template_1_stage_name),
15+
loop = 3,
16+
steps = listOf(
17+
StepEntity.Step(
18+
label = getString(RBase.string.sample_timer_template_1_stage_work),
19+
length = 90_000L
20+
),
21+
getTemplateNotifierStep()
22+
),
23+
startStep = getTemplateStartStep(),
24+
endStep = getTemplateEndStep()
25+
)
26+
27+
internal fun Context.getTwoStagesTimer(): TimerEntity = TimerEntity(
28+
id = TimerEntity.NEW_ID,
29+
name = getString(RBase.string.sample_timer_template_2_stages_name),
30+
loop = 3,
31+
steps = listOf(
32+
StepEntity.Step(
33+
label = getString(RBase.string.sample_timer_template_2_stages_high),
34+
length = 90_000L
35+
),
36+
getTemplateNotifierStep(),
37+
StepEntity.Step(
38+
label = getString(RBase.string.sample_timer_template_2_stages_low),
39+
length = 30_000L
40+
),
41+
getTemplateNotifierStep()
42+
),
43+
startStep = getTemplateStartStep(RBase.string.sample_timer_template_2_stages_start),
44+
endStep = getTemplateEndStep(RBase.string.sample_timer_template_2_stages_end)
45+
)
46+
47+
internal fun Context.getThreeStagesTimer(): TimerEntity = TimerEntity(
48+
id = TimerEntity.NEW_ID,
49+
name = getString(RBase.string.sample_timer_template_3_stages_name),
50+
loop = 3,
51+
steps = listOf(
52+
StepEntity.Step(
53+
label = getString(RBase.string.sample_timer_template_3_stages_1),
54+
length = 60_000L
55+
),
56+
getTemplateNotifierStep(),
57+
StepEntity.Step(
58+
label = getString(RBase.string.sample_timer_template_3_stages_2),
59+
length = 60_000L
60+
),
61+
getTemplateNotifierStep(),
62+
StepEntity.Step(
63+
label = getString(RBase.string.sample_timer_template_3_stages_3),
64+
length = 60_000L
65+
),
66+
getTemplateNotifierStep()
67+
),
68+
startStep = getTemplateStartStep(),
69+
endStep = getTemplateEndStep()
70+
)
71+
72+
private fun Context.getTemplateNotifierStep(): StepEntity.Step = StepEntity.Step(
73+
label = getString(RBase.string.sample_timer_template_done),
74+
length = 5_000L,
75+
behaviour = listOf(
76+
BehaviourEntity(BehaviourType.MUSIC),
77+
BehaviourEntity(BehaviourType.SCREEN)
78+
),
79+
type = StepType.NOTIFIER
80+
)
81+
82+
private fun Context.getTemplateStartStep(
83+
@StringRes labelRes: Int = RBase.string.sample_timer_template_prepare
84+
): StepEntity.Step = StepEntity.Step(
85+
label = getString(labelRes),
86+
length = 10_000L,
87+
behaviour = listOf(BehaviourEntity(BehaviourType.BEEP)),
88+
type = StepType.START
89+
)
90+
91+
private fun Context.getTemplateEndStep(
92+
@StringRes labelRes: Int = RBase.string.sample_timer_template_finish
93+
): StepEntity.Step = StepEntity.Step(
94+
label = getString(labelRes),
95+
length = 10_000L,
96+
behaviour = listOf(BehaviourEntity(BehaviourType.VOICE)),
97+
type = StepType.END
98+
)

‎data/src/main/java/xyz/aprildown/timer/data/di/RepoModule.kt‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import xyz.aprildown.timer.data.repositories.AppDataRepositoryImpl
1515
import xyz.aprildown.timer.data.repositories.FolderRepositoryImpl
1616
import xyz.aprildown.timer.data.repositories.NotifierRepositoryImpl
1717
import xyz.aprildown.timer.data.repositories.PreferencesRepoImpl
18-
import xyz.aprildown.timer.data.repositories.SampleTimerRepositoryImpl
1918
import xyz.aprildown.timer.data.repositories.SchedulerExecutorImpl
2019
import xyz.aprildown.timer.data.repositories.SchedulerRepositoryImpl
2120
import xyz.aprildown.timer.data.repositories.TimerRepositoryImpl
@@ -24,7 +23,6 @@ import xyz.aprildown.timer.domain.repositories.AppDataRepository
2423
import xyz.aprildown.timer.domain.repositories.FolderRepository
2524
import xyz.aprildown.timer.domain.repositories.NotifierRepository
2625
import xyz.aprildown.timer.domain.repositories.PreferencesRepository
27-
import xyz.aprildown.timer.domain.repositories.SampleTimerRepository
2826
import xyz.aprildown.timer.domain.repositories.SchedulerExecutor
2927
import xyz.aprildown.timer.domain.repositories.SchedulerRepository
3028
import xyz.aprildown.timer.domain.repositories.TimerRepository
@@ -55,9 +53,6 @@ internal abstract class RepoModule {
5553
@Binds
5654
abstract fun bindTimerStampRepo(repo: TimerStampRepositoryImpl): TimerStampRepository
5755

58-
@Binds
59-
abstract fun bindSampleTimersStampRepo(repo: SampleTimerRepositoryImpl): SampleTimerRepository
60-
6156
@Binds
6257
abstract fun bindPreferencesRepo(repo: PreferencesRepoImpl): PreferencesRepository
6358

‎data/src/main/java/xyz/aprildown/timer/data/repositories/SampleTimerRepositoryImpl.kt‎

Lines changed: 0 additions & 120 deletions
This file was deleted.

‎data/src/main/res/values/ids.xml‎

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,4 @@
33
<item name="folder_default" type="string" />
44
<item name="folder_trash" type="string" />
55
<item name="edit_default_notifier_name" type="string" />
6-
<item name="sample_timer_template_prepare" type="string" />
7-
<item name="sample_timer_template_finish" type="string" />
8-
<item name="sample_timer_template_done" type="string" />
9-
<item name="sample_timer_template_1_stage_name" type="string" />
10-
<item name="sample_timer_template_1_stage_work" type="string" />
11-
<item name="sample_timer_template_2_stages_name" type="string" />
12-
<item name="sample_timer_template_2_stages_start" type="string" />
13-
<item name="sample_timer_template_2_stages_high" type="string" />
14-
<item name="sample_timer_template_2_stages_low" type="string" />
15-
<item name="sample_timer_template_2_stages_end" type="string" />
16-
<item name="sample_timer_template_3_stages_name" type="string" />
17-
<item name="sample_timer_template_3_stages_1" type="string" />
18-
<item name="sample_timer_template_3_stages_2" type="string" />
19-
<item name="sample_timer_template_3_stages_3" type="string" />
206
</resources>

‎domain/src/main/java/xyz/aprildown/timer/domain/repositories/SampleTimerRepository.kt‎

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎domain/src/main/java/xyz/aprildown/timer/domain/usecases/timer/SampleTimerProvider.kt‎

Lines changed: 0 additions & 27 deletions
This file was deleted.

‎domain/src/test/java/xyz/aprildown/timer/domain/SampleTimerProviderTest.kt‎

Lines changed: 0 additions & 22 deletions
This file was deleted.

‎presentation/src/main/java/xyz/aprildown/timer/presentation/edit/EditViewModel.kt‎

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import xyz.aprildown.timer.domain.usecases.timer.AddTimer
2424
import xyz.aprildown.timer.domain.usecases.timer.DeleteTimer
2525
import xyz.aprildown.timer.domain.usecases.timer.FindTimerInfo
2626
import xyz.aprildown.timer.domain.usecases.timer.GetTimer
27-
import xyz.aprildown.timer.domain.usecases.timer.SampleTimerProvider
2827
import xyz.aprildown.timer.domain.usecases.timer.SaveTimer
2928
import xyz.aprildown.timer.domain.usecases.timer.ShareTimer
3029
import xyz.aprildown.timer.presentation.BaseViewModel
@@ -33,7 +32,6 @@ import xyz.aprildown.timer.presentation.di.ViewModelModule
3332
import xyz.aprildown.tools.arch.Event
3433
import javax.inject.Inject
3534
import javax.inject.Named
36-
import javax.inject.Provider
3735

3836
/**
3937
* Instead of putting all work to ViewModel,
@@ -52,7 +50,6 @@ class EditViewModel @Inject constructor(
5250
private val getNotifier: GetNotifier,
5351
private val saveNotifier: SaveNotifier,
5452
@Named(ViewModelModule.DEFAULT_TIMER_NAME) private val defaultName: String,
55-
private val sampleTimerProviderProvider: Provider<SampleTimerProvider>,
5653

5754
private val shareTimer: ShareTimer,
5855
) : BaseViewModel(mainDispatcher) {
@@ -123,15 +120,12 @@ class EditViewModel @Inject constructor(
123120
}
124121
}
125122

126-
fun loadSampleTimer(sampleTimerId: Int): Job? {
127-
return if (sampleTimerId != SampleTimerProvider.NO_SAMPLE) launch {
128-
val sampleTimer = sampleTimerProviderProvider.get().invoke(sampleTimerId)
129-
name.value = sampleTimer.name
130-
loop.value = sampleTimer.loop
131-
_stepsEvent.value = Event(sampleTimer.steps)
132-
_startEndEvent.value = Event(Pair(sampleTimer.startStep, sampleTimer.endStep))
133-
more.value = sampleTimer.more
134-
} else null
123+
fun loadSampleTimer(timer: TimerEntity) {
124+
name.value = timer.name
125+
loop.value = timer.loop
126+
_stepsEvent.value = Event(timer.steps)
127+
_startEndEvent.value = Event(Pair(timer.startStep, timer.endStep))
128+
more.value = timer.more
135129
}
136130

137131
fun requestTimerInfoByTimerId(timerId: Int) = launch {

0 commit comments

Comments
 (0)