1
1
package com.likethesalad.android.templates.common.tasks.identifier.action
2
2
3
+ import com.likethesalad.android.templates.common.configuration.StemConfiguration
3
4
import com.likethesalad.android.templates.common.tasks.identifier.data.TemplateItem
4
5
import com.likethesalad.android.templates.common.tasks.identifier.data.TemplateItemsSerializer
5
6
import com.likethesalad.android.templates.common.utils.CommonConstants
6
7
import com.likethesalad.tools.resource.api.android.data.AndroidResourceType
7
8
import com.likethesalad.tools.resource.api.android.environment.Language
8
9
import com.likethesalad.tools.resource.api.android.modules.string.StringAndroidResource
10
+ import com.likethesalad.tools.resource.api.collection.ResourceCollection
9
11
import com.likethesalad.tools.resource.locator.android.extension.configuration.data.ResourcesProvider
10
12
import dagger.assisted.Assisted
11
13
import dagger.assisted.AssistedFactory
@@ -15,6 +17,7 @@ import java.io.File
15
17
class TemplatesIdentifierAction @AssistedInject constructor(
16
18
@Assisted private val localResources : ResourcesProvider ,
17
19
@Assisted private val outputFile : File ,
20
+ private val configuration : StemConfiguration ,
18
21
private val templateItemsSerializer : TemplateItemsSerializer
19
22
) {
20
23
@@ -28,10 +31,32 @@ class TemplatesIdentifierAction @AssistedInject constructor(
28
31
outputFile.writeText(templateItemsSerializer.serialize(templates))
29
32
}
30
33
31
- @Suppress(" UNCHECKED_CAST" )
32
34
private fun getTemplatesFromResources (): List <TemplateItem > {
33
- val mainLanguageResources = localResources.resources.getMergedResourcesForLanguage(Language .Default )
34
- val stringResources = mainLanguageResources.getResourcesByType(AndroidResourceType .StringType )
35
+ return if (configuration.searchForTemplatesInLanguages()) {
36
+ getTemplatesFromAllCollections()
37
+ } else {
38
+ val mainLanguageResources = localResources.resources.getMergedResourcesForLanguage(Language .Default )
39
+ getTemplatesForCollection(mainLanguageResources)
40
+ }
41
+ }
42
+
43
+ private fun getTemplatesFromAllCollections (): List <TemplateItem > {
44
+ val resources = localResources.resources
45
+ val allLanguages = resources.listLanguages()
46
+ val templates = mutableSetOf<TemplateItem >()
47
+
48
+ allLanguages.forEach { language ->
49
+ val collection = resources.getMergedResourcesForLanguage(language)
50
+ val collectionTemplates = getTemplatesForCollection(collection)
51
+ templates.addAll(collectionTemplates)
52
+ }
53
+
54
+ return templates.toList()
55
+ }
56
+
57
+ @Suppress(" UNCHECKED_CAST" )
58
+ private fun getTemplatesForCollection (resourceCollection : ResourceCollection ): List <TemplateItem > {
59
+ val stringResources = resourceCollection.getResourcesByType(AndroidResourceType .StringType )
35
60
val templates = filterTemplates(stringResources as List <StringAndroidResource >)
36
61
37
62
return templates.sortedBy { it.name() }.map {
0 commit comments