From 15ccfe89c7122f032398be883be51bb6831c0f3f Mon Sep 17 00:00:00 2001 From: Sungyong An Date: Sun, 2 Feb 2025 09:49:27 +0900 Subject: [PATCH] Add :core:datetime module --- core/datetime/.gitignore | 1 + core/datetime/build.gradle | 16 ++++++++++++++++ core/datetime/src/main/AndroidManifest.xml | 2 ++ .../main/java/soup/movie/datetime}/DateHelper.kt | 2 +- .../java/soup/movie/datetime}/DataHelperTest.kt | 2 +- domain/build.gradle | 1 + .../java/soup/movie/domain/movie/MovieExt.kt | 6 +++--- feature/detail/impl/build.gradle | 1 + .../movie/feature/detail/impl/DetailViewModel.kt | 6 +++--- feature/tasks/impl/build.gradle | 1 + .../tasks/impl/AnnounceOpenDateTasksImpl.kt | 2 +- .../tasks/impl/AnnounceOpenDateUseCase.kt | 6 +++--- 12 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 core/datetime/.gitignore create mode 100644 core/datetime/build.gradle create mode 100644 core/datetime/src/main/AndroidManifest.xml rename {domain/src/main/java/soup/movie/domain/movie => core/datetime/src/main/java/soup/movie/datetime}/DateHelper.kt (98%) rename {domain/src/test/kotlin/soup/movie/domain/movie => core/datetime/src/test/java/soup/movie/datetime}/DataHelperTest.kt (98%) diff --git a/core/datetime/.gitignore b/core/datetime/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/core/datetime/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/datetime/build.gradle b/core/datetime/build.gradle new file mode 100644 index 000000000..6b4e35e97 --- /dev/null +++ b/core/datetime/build.gradle @@ -0,0 +1,16 @@ +plugins { + id "moop.android.library" +} + +android { + namespace "soup.movie.datetime" +} + +dependencies { + implementation projects.core.kotlin + implementation projects.data.model + + implementation libs.kotlin.stdlib + + testImplementation projects.testing +} diff --git a/core/datetime/src/main/AndroidManifest.xml b/core/datetime/src/main/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/core/datetime/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/domain/src/main/java/soup/movie/domain/movie/DateHelper.kt b/core/datetime/src/main/java/soup/movie/datetime/DateHelper.kt similarity index 98% rename from domain/src/main/java/soup/movie/domain/movie/DateHelper.kt rename to core/datetime/src/main/java/soup/movie/datetime/DateHelper.kt index 73ab7d906..cc0215762 100644 --- a/domain/src/main/java/soup/movie/domain/movie/DateHelper.kt +++ b/core/datetime/src/main/java/soup/movie/datetime/DateHelper.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package soup.movie.domain.movie +package soup.movie.datetime import java.time.DayOfWeek import java.time.LocalDate diff --git a/domain/src/test/kotlin/soup/movie/domain/movie/DataHelperTest.kt b/core/datetime/src/test/java/soup/movie/datetime/DataHelperTest.kt similarity index 98% rename from domain/src/test/kotlin/soup/movie/domain/movie/DataHelperTest.kt rename to core/datetime/src/test/java/soup/movie/datetime/DataHelperTest.kt index 57228354d..1961f9154 100644 --- a/domain/src/test/kotlin/soup/movie/domain/movie/DataHelperTest.kt +++ b/core/datetime/src/test/java/soup/movie/datetime/DataHelperTest.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package soup.movie.domain.movie +package soup.movie.datetime import org.junit.Assert.assertEquals import org.junit.Test diff --git a/domain/build.gradle b/domain/build.gradle index d5b67e8a8..2d96b43f0 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -8,6 +8,7 @@ android { dependencies { implementation projects.core.kotlin + implementation projects.core.datetime implementation projects.data.model implementation libs.kotlin.stdlib diff --git a/domain/src/main/java/soup/movie/domain/movie/MovieExt.kt b/domain/src/main/java/soup/movie/domain/movie/MovieExt.kt index 56a630876..687367d5e 100644 --- a/domain/src/main/java/soup/movie/domain/movie/MovieExt.kt +++ b/domain/src/main/java/soup/movie/domain/movie/MovieExt.kt @@ -15,7 +15,7 @@ */ package soup.movie.domain.movie -import soup.movie.model.MovieDetailModel +import soup.movie.datetime.today import soup.movie.model.MovieModel import java.time.LocalDate import java.time.temporal.ChronoUnit @@ -36,8 +36,8 @@ private fun MovieModel.hasOpenDate(): Boolean = openDate.toLocalDate() != null fun MovieModel.isDDay(): Boolean = isPlan and hasOpenDate() -fun MovieDetailModel.screenDays(): Int { - val openDate = movie.openDate.toLocalDate() +fun MovieModel.screenDays(): Int { + val openDate = openDate.toLocalDate() if (openDate != null) { return ChronoUnit.DAYS.between(openDate, today()).toInt() } diff --git a/feature/detail/impl/build.gradle b/feature/detail/impl/build.gradle index f4ce0faa1..ee9a53b28 100644 --- a/feature/detail/impl/build.gradle +++ b/feature/detail/impl/build.gradle @@ -16,6 +16,7 @@ dependencies { implementation projects.core.imageloading.api implementation projects.core.logger implementation projects.core.resources + implementation projects.core.datetime implementation projects.data.repository.api implementation projects.data.model implementation projects.domain diff --git a/feature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailViewModel.kt b/feature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailViewModel.kt index b4573e2dc..2b03c6482 100644 --- a/feature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailViewModel.kt +++ b/feature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailViewModel.kt @@ -27,9 +27,9 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import soup.movie.common.DefaultDispatcher import soup.movie.data.repository.MovieRepository -import soup.movie.domain.movie.MM_DD +import soup.movie.datetime.MM_DD +import soup.movie.datetime.yesterday import soup.movie.domain.movie.screenDays -import soup.movie.domain.movie.yesterday import soup.movie.log.Logger import soup.movie.model.MovieDetailModel import soup.movie.model.OpenDateAlarmModel @@ -96,7 +96,7 @@ class DetailViewModel @Inject constructor( rank = rank, rankDate = yesterday().MM_DD(), audience = audiAcc, - screenDays = screenDays(), + screenDays = movie.screenDays(), ), ) } diff --git a/feature/tasks/impl/build.gradle b/feature/tasks/impl/build.gradle index 86d57144c..fe5ca73d5 100644 --- a/feature/tasks/impl/build.gradle +++ b/feature/tasks/impl/build.gradle @@ -12,6 +12,7 @@ dependencies { implementation projects.core.kotlin implementation projects.core.logger implementation projects.core.resources + implementation projects.core.datetime implementation projects.data.repository.api implementation projects.data.model implementation projects.domain diff --git a/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateTasksImpl.kt b/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateTasksImpl.kt index 998ebb722..8910f6fea 100644 --- a/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateTasksImpl.kt +++ b/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateTasksImpl.kt @@ -19,7 +19,7 @@ import androidx.work.BackoffPolicy import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager -import soup.movie.domain.movie.currentTime +import soup.movie.datetime.currentTime import soup.movie.feature.tasks.AnnounceOpenDateTasks import java.time.temporal.ChronoUnit import java.util.concurrent.TimeUnit diff --git a/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateUseCase.kt b/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateUseCase.kt index f5f028860..1eea4d322 100644 --- a/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateUseCase.kt +++ b/feature/tasks/impl/src/main/java/soup/movie/feature/tasks/impl/AnnounceOpenDateUseCase.kt @@ -16,9 +16,9 @@ package soup.movie.feature.tasks.impl import soup.movie.data.repository.MovieRepository -import soup.movie.domain.movie.YYYY_MM_DD -import soup.movie.domain.movie.plusDaysTo -import soup.movie.domain.movie.today +import soup.movie.datetime.YYYY_MM_DD +import soup.movie.datetime.plusDaysTo +import soup.movie.datetime.today import soup.movie.feature.notification.NotificationBuilder import soup.movie.model.OpenDateAlarmModel import java.time.DayOfWeek