Skip to content

Commit a4060e8

Browse files
Merge pull request #35 from amanshuraikwar/js-tests
cleanup
2 parents 43cf13e + d885fad commit a4060e8

6 files changed

Lines changed: 578 additions & 185 deletions

File tree

project-files/Portfolio/buildWebsite.kts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,29 @@ File(".") exec "mkdir build/tests"
5656
println("Creating directory build/tests/shared...")
5757
File(".") exec "mkdir build/tests/shared"
5858

59-
println("Running theme data tests in :shared for Android/JVM target...")
59+
println("Running tests in :shared for Android/JVM target...")
6060
File(".") exec "./gradlew :shared:cleanTestDebugUnitTest :shared:testDebugUnitTest"
6161
println("Creating directory build/tests/shared/android-jvm...")
6262
File(".") exec "mkdir build/tests/shared/android-jvm"
6363
println("Copying contents from shared/build/reports/tests/testDebugUnitTest/ to build/tests/shared/android-jvm/...")
6464
File(".") exec "cp -R shared/build/reports/tests/testDebugUnitTest/ build/tests/shared/android-jvm/"
6565

66-
println("Running theme data tests in :shared for Js Browser...")
66+
println("Running tests in :shared for Js Browser...")
6767
File(".") exec "./gradlew :shared:cleanJsBrowserTest :shared:jsBrowserTest --stacktrace"
6868
println("Creating directory build/tests/shared/js-browser...")
6969
File(".") exec "mkdir build/tests/shared/js-browser"
7070
println("Copying contents from shared/build/reports/tests/jsBrowserTest/ to build/tests/shared/js-browser/...")
7171
File(".") exec "cp -R shared/build/reports/tests/jsBrowserTest/ build/tests/shared/js-browser/"
7272

73+
println("Deleting build/js...")
74+
File(".") exec "rm -rf build/js"
75+
76+
println("Deleting build/tmp...")
77+
File(".") exec "rm -rf build/tmp"
78+
79+
println("Deleting .map files...")
80+
File(".") exec "find build -name \"*.map\" -type f -delete"
81+
7382
data class BlogListEntry(
7483
val title: String,
7584
val date: String,
@@ -92,6 +101,8 @@ fun createBlogListFile(blogListEntryList: List<BlogListEntry>): File {
92101

93102
out.write("\n")
94103

104+
out.write("/**\n * Note: generated by buildWebsite.kts, do not edit!\n */\n")
105+
95106
out.write("class BlogListDataStore {\n")
96107

97108
out.write("\n")
@@ -169,17 +180,19 @@ fun generateEmptyDataStoreFile(pageType: String) {
169180

170181
out.write("\n")
171182

172-
out.write("class GeneratedDataStore {\n")
183+
out.write("/**\n * Note: generated by buildWebsite.kts, do not edit!\n */\n")
184+
185+
out.write("class GeneratedDataStore : DataStore {\n")
173186

174187
out.write("\n")
175188

176-
out.write("\tfun getPageType(): PageType {\n")
189+
out.write("\toverride fun getPageType(): PageType {\n")
177190
out.write("\t\treturn $pageType\n")
178191
out.write("\t}\n")
179192

180193
out.write("\n")
181194

182-
out.write("\tfun getData(): List<MdNode> {\n")
195+
out.write("\toverride fun getData(): List<MdNode> {\n")
183196
out.write("\t\treturn listOf()\n")
184197
out.write("\t}\n")
185198

@@ -205,17 +218,19 @@ fun generateBlogMdSource(file: File): BlogListEntry {
205218

206219
out.write("\n")
207220

208-
out.write("class GeneratedDataStore {\n")
221+
out.write("/**\n * Note: generated by buildWebsite.kts, do not edit!\n */\n")
222+
223+
out.write("class GeneratedDataStore : DataStore {\n")
209224

210225
out.write("\n")
211226

212-
out.write("\tfun getPageType(): PageType {\n")
227+
out.write("\toverride fun getPageType(): PageType {\n")
213228
out.write("\t\treturn PageType.MD\n")
214229
out.write("\t}\n")
215230

216231
out.write("\n")
217232

218-
out.write("\tfun getData(): List<MdNode> {\n")
233+
out.write("\toverride fun getData(): List<MdNode> {\n")
219234

220235
out.write("\t\treturn listOf(\n")
221236

project-files/Portfolio/shared/src/commonMain/kotlin/io/github/amanshuraikwar/portfolio/BlogListDataStore.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package io.github.amanshuraikwar.portfolio
22

33
import io.github.amanshuraikwar.portfolio.markdown.BlogListDataItem
44

5+
/**
6+
* Note: generated by buildWebsite.kts, do not edit!
7+
*/
58
class BlogListDataStore {
69

710
fun getBlogListData(): List<BlogListDataItem> {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.github.amanshuraikwar.portfolio
2+
3+
import io.github.amanshuraikwar.portfolio.markdown.MdNode
4+
5+
interface DataStore {
6+
fun getPageType(): PageType
7+
fun getData(): List<MdNode>
8+
}

project-files/Portfolio/shared/src/commonMain/kotlin/io/github/amanshuraikwar/portfolio/GeneratedDataStore.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@ package io.github.amanshuraikwar.portfolio
22

33
import io.github.amanshuraikwar.portfolio.markdown.MdNode
44

5-
class GeneratedDataStore {
5+
/**
6+
* Note: generated by buildWebsite.kts, do not edit!
7+
*/
8+
class GeneratedDataStore : DataStore {
69

7-
fun getPageType(): PageType {
10+
override fun getPageType(): PageType {
811
return PageType.HOME
912
}
1013

11-
fun getData(): List<MdNode> {
14+
override fun getData(): List<MdNode> {
1215
return listOf()
1316
}
1417
}

project-files/Portfolio/shared/src/commonMain/kotlin/io/github/amanshuraikwar/portfolio/PortfolioRepository.kt

Lines changed: 55 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ class PortfolioRepository(
2929
),
3030
private val settings: Settings = Settings(),
3131
private val defaultThemeColorsName: String = DEFAULT_THEME_COLORS_NAME,
32-
private val defaultThemeData: ThemeData = DEFAULT_THEME_DATA
32+
private val defaultThemeData: ThemeData = DEFAULT_THEME_DATA,
33+
private val dataStore: DataStore = GeneratedDataStore(),
3334
) {
3435
private val errorHandler = CoroutineExceptionHandler { _, th ->
3536
// do nothing
@@ -100,17 +101,21 @@ class PortfolioRepository(
100101
themeColors = MutableStateFlow(initThemeColors)
101102
}
102103

103-
private fun ThemeData.getThemeColors(name: String): ThemeColorsData? {
104-
return themes.find {
105-
it.name.replace(" ", "").lowercase() == name
106-
}
104+
fun getSelectedThemeColorsName(): StateFlow<String> {
105+
return themeColorsNameFlow
107106
}
108107

109-
fun getSelectedThemeColors(): StateFlow<ThemeColorsData> {
110-
repositoryScope.launch {
111-
//fetchThemeDataFromRemote()
108+
fun setSelectedThemeColorsName(name: String) {
109+
val parsedName = name.replace(" ", "").lowercase()
110+
val selectedThemeColors = themeData.getThemeColors(parsedName)
111+
if (selectedThemeColors != null) {
112+
themeColorsName = parsedName
113+
themeColorsNameFlow.value = themeColorsName
114+
themeColors.value = selectedThemeColors
112115
}
116+
}
113117

118+
fun getSelectedThemeColors(): StateFlow<ThemeColorsData> {
114119
return themeColors
115120
}
116121

@@ -123,55 +128,46 @@ class PortfolioRepository(
123128
}
124129

125130
private suspend fun fetchThemeDataFromRemote() {
126-
portfolioApi.getThemeData().let { response ->
127-
val newThemeData = ThemeData(
128-
response.themes.map { themeColors ->
129-
ThemeColorsData(
130-
name = themeColors.name,
131-
isDark = themeColors.isDark,
132-
primaryColor = themeColors.primaryColor,
133-
onPrimaryColor = themeColors.onPrimaryColor,
134-
surfaceColor = themeColors.surfaceColor,
135-
onSurfaceColor = themeColors.onSurfaceColor,
136-
errorColor = themeColors.errorColor,
137-
onErrorColor = themeColors.onErrorColor,
138-
)
139-
}
140-
)
131+
portfolioApi.getThemeData()
132+
.takeIf {
133+
it.themes.isNotEmpty()
134+
}
135+
?.let { response ->
136+
val newThemeData = ThemeData(
137+
response.themes.map { themeColors ->
138+
ThemeColorsData(
139+
name = themeColors.name,
140+
isDark = themeColors.isDark,
141+
primaryColor = themeColors.primaryColor,
142+
onPrimaryColor = themeColors.onPrimaryColor,
143+
surfaceColor = themeColors.surfaceColor,
144+
onSurfaceColor = themeColors.onSurfaceColor,
145+
errorColor = themeColors.errorColor,
146+
onErrorColor = themeColors.onErrorColor,
147+
)
148+
}
149+
)
141150

142-
themeData = newThemeData
143-
themeDataFlow.value = themeData
151+
themeData = newThemeData
152+
themeDataFlow.value = themeData
144153

145-
while (true) {
146-
val newThemeColors = themeData.getThemeColors(themeColorsName)
147-
if (newThemeColors != null) {
148-
themeColors.value = newThemeColors
149-
break
154+
while (true) {
155+
val newThemeColors = themeData.getThemeColors(themeColorsName)
156+
if (newThemeColors != null) {
157+
themeColorsNameFlow.value = themeColorsName
158+
themeColors.value = newThemeColors
159+
break
160+
}
161+
val parsedName = themeData.themes[0]
162+
.name
163+
.replace(" ", "")
164+
.lowercase()
165+
themeColorsName = parsedName
150166
}
151-
val parsedName = themeData.themes[0]
152-
.name
153-
.replace(" ", "")
154-
.lowercase()
155-
themeColorsName = parsedName
156167
}
157-
}
158168
}
159169

160-
fun getSelectedThemeColorsName(): StateFlow<String> {
161-
return themeColorsNameFlow
162-
}
163-
164-
fun setSelectedThemeColorsName(name: String) {
165-
val parsedName = name.replace(" ", "").lowercase()
166-
val selectedThemeColors = themeData.getThemeColors(parsedName)
167-
if (selectedThemeColors != null) {
168-
themeColorsName = parsedName
169-
themeColorsNameFlow.value = themeColorsName
170-
themeColors.value = selectedThemeColors
171-
}
172-
}
173-
174-
suspend fun getPortfolioData(): PortfolioData {
170+
private suspend fun getPortfolioData(): PortfolioData {
175171
return withContext(Dispatchers.Default) {
176172
portfolioApi.getPortfolioData().let { response ->
177173
PortfolioData(
@@ -211,27 +207,26 @@ class PortfolioRepository(
211207
}
212208
}
213209

214-
// to be called from Kotlin/Native client
215-
fun getPortfolioData(callback: (PortfolioData) -> Unit) {
216-
repositoryScope.launch {
217-
callback(getPortfolioData())
218-
}
219-
}
220-
221210
suspend fun getPageData(): PageData {
222-
return when (GeneratedDataStore().getPageType()) {
211+
return when (dataStore.getPageType()) {
223212
PageType.HOME -> PageData.Home(
224213
getPortfolioData(),
225214
BlogListDataStore().getBlogListData()
226215
)
227-
PageType.MD -> PageData.Md(getPortfolioData(), GeneratedDataStore().getData())
216+
PageType.MD -> PageData.Md(getPortfolioData(), dataStore.getData())
228217
PageType.PROJECTS -> PageData.Projects(getPortfolioData())
229218
PageType.BACKGROUND -> PageData.Background(getPortfolioData())
230219
PageType.ABOUT_ME -> PageData.AboutMe(getPortfolioData())
231220
}
232221
}
233222

234223
companion object {
224+
private fun ThemeData.getThemeColors(name: String): ThemeColorsData? {
225+
return themes.find {
226+
it.name.replace(" ", "").lowercase() == name
227+
}
228+
}
229+
235230
private const val PREFS_THEME_COLORS_NAME = "theme_colors_name"
236231
private const val PREFS_THEME_DATA = "theme_data"
237232

0 commit comments

Comments
 (0)