From 67f9b12369e227f4793f15808255bce0747bd81d Mon Sep 17 00:00:00 2001 From: sanao1006 Date: Mon, 13 Nov 2023 14:34:46 +0900 Subject: [PATCH] refactor: Use explicit API for core/model module Avoid unintentionally exposing declarations to the public API by using the explicitAPI mode. Fixes #1220 --- core/model/build.gradle.kts | 1 + .../contributors/AchievementRepository.kt | 18 ++++++++--------- .../confsched2023/model/AboutItem.kt | 20 +++++++++---------- .../confsched2023/model/Achievement.kt | 6 +++--- .../model/AchievementAnimation.kt | 4 ++-- .../model/BuildConfigProvider.kt | 6 +++--- .../model/ContributorsRepository.kt | 6 +++--- .../confsched2023/model/DroidKaigi2023Day.kt | 4 ++-- .../confsched2023/model/FloorLevel.kt | 2 +- .../confsched2023/model/RoomType.kt | 2 +- .../confsched2023/model/SessionsRepository.kt | 8 ++++---- .../confsched2023/model/SideEvent.kt | 8 ++++---- .../droidkaigi/confsched2023/model/Staff.kt | 4 ++-- .../confsched2023/model/StaffRepository.kt | 2 +- .../confsched2023/model/TimetableCategory.kt | 2 +- .../confsched2023/model/TimetableItem.kt | 2 +- .../confsched2023/model/TimetableItemList.kt | 2 +- .../confsched2023/model/TimetableLanguage.kt | 4 ++-- .../confsched2023/model/TimetableRoom.kt | 6 +++--- .../model/TimetableSessionType.kt | 10 +++++----- 20 files changed, 59 insertions(+), 58 deletions(-) diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index b2e28d270..6d0e60e7b 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -9,6 +9,7 @@ android.namespace = "io.github.droidkaigi.confsched2023.core.model" @Suppress("UnusedPrivateProperty") kotlin { + explicitApi() sourceSets { commonMain { dependencies { diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/data/contributors/AchievementRepository.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/data/contributors/AchievementRepository.kt index 627b651a7..5fd8c08b3 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/data/contributors/AchievementRepository.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/data/contributors/AchievementRepository.kt @@ -4,13 +4,13 @@ import io.github.droidkaigi.confsched2023.model.Achievement import kotlinx.collections.immutable.PersistentSet import kotlinx.coroutines.flow.Flow -interface AchievementRepository { - fun getAchievementEnabledStream(): Flow - fun getAchievementDetailDescriptionStream(): Flow - fun getResetAchievementsEnabledStream(): Flow - fun getAchievementsStream(): Flow> - fun getIsInitialDialogDisplayStateStream(): Flow - suspend fun saveAchievements(achievement: Achievement) - suspend fun resetAchievements() - suspend fun displayedInitialDialog() +public interface AchievementRepository { + public fun getAchievementEnabledStream(): Flow + public fun getAchievementDetailDescriptionStream(): Flow + public fun getResetAchievementsEnabledStream(): Flow + public fun getAchievementsStream(): Flow> + public fun getIsInitialDialogDisplayStateStream(): Flow + public suspend fun saveAchievements(achievement: Achievement) + public suspend fun resetAchievements() + public suspend fun displayedInitialDialog() } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AboutItem.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AboutItem.kt index 62c0b8329..ab7a2e60b 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AboutItem.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AboutItem.kt @@ -1,13 +1,13 @@ package io.github.droidkaigi.confsched2023.model -sealed class AboutItem { - data object Sponsors : AboutItem() - data object Contributors : AboutItem() - data object Staff : AboutItem() - data object CodeOfConduct : AboutItem() - data object License : AboutItem() - data object PrivacyPolicy : AboutItem() - data object YouTube : AboutItem() - data object X : AboutItem() - data object Medium : AboutItem() +public sealed class AboutItem { + public data object Sponsors : AboutItem() + public data object Contributors : AboutItem() + public data object Staff : AboutItem() + public data object CodeOfConduct : AboutItem() + public data object License : AboutItem() + public data object PrivacyPolicy : AboutItem() + public data object YouTube : AboutItem() + public data object X : AboutItem() + public data object Medium : AboutItem() } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Achievement.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Achievement.kt index 313a9c0b8..2eb13e0b0 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Achievement.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Achievement.kt @@ -1,6 +1,6 @@ package io.github.droidkaigi.confsched2023.model -enum class Achievement(val id: String, val sha256: String) { +public enum class Achievement(public val id: String, public val sha256: String) { ArcticFox( id = "Arctic Fox", sha256 = "8370e6e6326c36f24b22f92a47ded5c3f1897aad46dfd9527016d2f3034d5f6e", @@ -22,8 +22,8 @@ enum class Achievement(val id: String, val sha256: String) { sha256 = "4e52d5a2f091279b365576319ee18384b3340e61f6c97a549ad8a7940c51d0bb", ), ; - companion object { - fun ofOrNull(id: String): Achievement? { + public companion object { + public fun ofOrNull(id: String): Achievement? { return entries.find { it.id == id } } } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AchievementAnimation.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AchievementAnimation.kt index e45775b1e..e5fc3b523 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AchievementAnimation.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/AchievementAnimation.kt @@ -1,11 +1,11 @@ package io.github.droidkaigi.confsched2023.model -data class AchievementAnimation( +public data class AchievementAnimation( val achievement: Achievement, val hasDrawableResId: Int, val notHasDrawableResId: Int, val hasAchievement: Boolean = false, val contentDescription: String, ) { - fun getDrawableResId() = if (hasAchievement) hasDrawableResId else notHasDrawableResId + public fun getDrawableResId(): Int = if (hasAchievement) hasDrawableResId else notHasDrawableResId } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/BuildConfigProvider.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/BuildConfigProvider.kt index 83cc50acd..768f264e4 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/BuildConfigProvider.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/BuildConfigProvider.kt @@ -1,6 +1,6 @@ package io.github.droidkaigi.confsched2023.model -interface BuildConfigProvider { - val versionName: String - val debugBuild: Boolean +public interface BuildConfigProvider { + public val versionName: String + public val debugBuild: Boolean } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/ContributorsRepository.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/ContributorsRepository.kt index ef0c669de..dc13b2a67 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/ContributorsRepository.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/ContributorsRepository.kt @@ -3,8 +3,8 @@ package io.github.droidkaigi.confsched2023.model import kotlinx.collections.immutable.PersistentList import kotlinx.coroutines.flow.Flow -interface ContributorsRepository { +public interface ContributorsRepository { - fun contributors(): Flow> - suspend fun refresh() + public fun contributors(): Flow> + public suspend fun refresh() } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/DroidKaigi2023Day.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/DroidKaigi2023Day.kt index 0648b9948..5f95fc3fa 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/DroidKaigi2023Day.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/DroidKaigi2023Day.kt @@ -45,7 +45,7 @@ public enum class DroidKaigi2023Day( ), ; - fun getDropDownText(language: String): String { + public fun getDropDownText(language: String): String { val japanese = "ja" val date = this.start.toLocalDateTime(TimeZone.currentSystemDefault()) @@ -81,7 +81,7 @@ public enum class DroidKaigi2023Day( /** * @return appropriate initial day for now */ - fun initialSelectedDay(clock: Clock): DroidKaigi2023Day { + public fun initialSelectedDay(clock: Clock): DroidKaigi2023Day { val reversedEntries = entries.sortedByDescending { it.day } var selectedDay = reversedEntries.last() for (entry in reversedEntries) { diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/FloorLevel.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/FloorLevel.kt index 8963a7a73..7a746bd5c 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/FloorLevel.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/FloorLevel.kt @@ -1,7 +1,7 @@ package io.github.droidkaigi.confsched2023.model public enum class FloorLevel( - val floorName: String, + public val floorName: String, ) { Basement("B1F"), Ground("1F"), diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/RoomType.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/RoomType.kt index 1d6d0f0bc..d0fc39d2b 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/RoomType.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/RoomType.kt @@ -3,7 +3,7 @@ package io.github.droidkaigi.confsched2023.model /** * Please use [TimetableRoom] to get room information. */ -enum class RoomType { +public enum class RoomType { RoomA, RoomB, RoomC, diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SessionsRepository.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SessionsRepository.kt index 425372681..e8eee9c97 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SessionsRepository.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SessionsRepository.kt @@ -2,8 +2,8 @@ package io.github.droidkaigi.confsched2023.model import kotlinx.coroutines.flow.Flow -interface SessionsRepository { - fun getTimetableStream(): Flow - fun getTimetableItemWithBookmarkStream(id: TimetableItemId): Flow> - suspend fun toggleBookmark(id: TimetableItemId) +public interface SessionsRepository { + public fun getTimetableStream(): Flow + public fun getTimetableItemWithBookmarkStream(id: TimetableItemId): Flow> + public suspend fun toggleBookmark(id: TimetableItemId) } diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SideEvent.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SideEvent.kt index 1cc8993e3..228cf20be 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SideEvent.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/SideEvent.kt @@ -17,20 +17,20 @@ public data class SideEvent( val link: String?, val imageLink: String?, ) { - enum class MarkShape { + public enum class MarkShape { Favorite, Circle, Square, } - enum class MarkColor { + public enum class MarkColor { Pink, Orange, Blue, Red, Purple } public companion object } -val SideEvents: PersistentList = persistentListOf( +public val SideEvents: PersistentList = persistentListOf( SideEvent( title = MultiLangText( jaTitle = "Day.3 イベント", @@ -52,7 +52,7 @@ val SideEvents: PersistentList = persistentListOf( ), ) -val FakeSideEvents +public val FakeSideEvents: PersistentList get() = persistentListOf( SideEvent( title = MultiLangText( diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Staff.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Staff.kt index b0d776961..e883d1cfa 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Staff.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/Staff.kt @@ -9,11 +9,11 @@ public data class Staff( val profileUrl: String, val iconUrl: String, ) { - companion object + public companion object } // create fakes -fun Staff.Companion.fakes(): PersistentList { +public fun Staff.Companion.fakes(): PersistentList { return (1..20).map { Staff( id = it.toLong(), diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/StaffRepository.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/StaffRepository.kt index f8da281ce..d05b0f3a0 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/StaffRepository.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/StaffRepository.kt @@ -4,7 +4,7 @@ import kotlinx.collections.immutable.PersistentList import kotlinx.coroutines.flow.Flow import kotlin.coroutines.cancellation.CancellationException -interface StaffRepository { +public interface StaffRepository { public fun staffs(): Flow> diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableCategory.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableCategory.kt index 2607d8f92..58e7631ee 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableCategory.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableCategory.kt @@ -7,7 +7,7 @@ public data class TimetableCategory( public companion object } -fun TimetableCategory.Companion.fakes(): List { +public fun TimetableCategory.Companion.fakes(): List { return listOf( TimetableCategory( id = 1, diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItem.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItem.kt index 8cf2d5a9d..7a1c6d6d1 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItem.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItem.kt @@ -99,7 +99,7 @@ public sealed class TimetableItem { "https://2023.droidkaigi.jp/en/timetable/${id.value}" } - fun getSupportedLangString(isJapaneseLocale: Boolean): String { + public fun getSupportedLangString(isJapaneseLocale: Boolean): String { val japanese = if (isJapaneseLocale) "日本語" else "Japanese" val english = if (isJapaneseLocale) "英語" else "English" val japaneseWithInterpretation = diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItemList.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItemList.kt index cdf945888..105f69a9d 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItemList.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableItemList.kt @@ -3,6 +3,6 @@ package io.github.droidkaigi.confsched2023.model import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf -data class TimetableItemList( +public data class TimetableItemList( val timetableItems: PersistentList = persistentListOf(), ) : PersistentList by timetableItems diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableLanguage.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableLanguage.kt index 1fbc3d387..88c410733 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableLanguage.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableLanguage.kt @@ -4,7 +4,7 @@ public data class TimetableLanguage( val langOfSpeaker: String, val isInterpretationTarget: Boolean, ) { - val labels = if (langOfSpeaker == Lang.MIXED.tagName) { + val labels: List = if (langOfSpeaker == Lang.MIXED.tagName) { listOf(Lang.MIXED.tagName) } else if (isInterpretationTarget) { listOf(Lang.ENGLISH.tagName, Lang.JAPANESE.tagName) @@ -12,7 +12,7 @@ public data class TimetableLanguage( listOf(langOfSpeaker.take(2)) } - fun toLang() = if (isInterpretationTarget) { + public fun toLang(): Lang = if (isInterpretationTarget) { Lang.MIXED } else { Lang.entries.firstOrNull { it.tagName == langOfSpeaker.take(2) } ?: Lang.MIXED diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableRoom.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableRoom.kt index 43462e154..79c5e987c 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableRoom.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableRoom.kt @@ -1,9 +1,9 @@ package io.github.droidkaigi.confsched2023.model @Immutable -data class TimetableRooms(val rooms: List) +public data class TimetableRooms(val rooms: List) -data class TimetableRoom( +public data class TimetableRoom( val id: Int, val name: MultiLangText, val type: RoomType, @@ -17,7 +17,7 @@ data class TimetableRoom( } } -val TimetableRoom.nameAndFloor: String +public val TimetableRoom.nameAndFloor: String get() { val basementFloorString = MultiLangText(jaTitle = "地下1階", enTitle = "B1F") val floor = when (type) { diff --git a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableSessionType.kt b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableSessionType.kt index 48f4d7b8a..956402c6f 100644 --- a/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableSessionType.kt +++ b/core/model/src/commonMain/kotlin/io/github/droidkaigi/confsched2023/model/TimetableSessionType.kt @@ -1,8 +1,8 @@ package io.github.droidkaigi.confsched2023.model -enum class TimetableSessionType( - val key: String, - val label: MultiLangText, +public enum class TimetableSessionType( + public val key: String, + public val label: MultiLangText, ) { WELCOME_TALK( key = "WELCOME_TALK", @@ -34,8 +34,8 @@ enum class TimetableSessionType( ), ; - companion object { - fun ofOrNull(key: String): TimetableSessionType? { + public companion object { + public fun ofOrNull(key: String): TimetableSessionType? { return entries.firstOrNull { it.key == key }