Skip to content

Commit 9017a39

Browse files
committed
Prevent multiple determineFeature calls
1 parent 192238c commit 9017a39

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

  • shared/src/commonMain/kotlin/site/remlit/snowdrop/util

shared/src/commonMain/kotlin/site/remlit/snowdrop/util/Features.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package site.remlit.snowdrop.util
22

3+
import androidx.compose.runtime.getValue
4+
import androidx.compose.runtime.mutableStateOf
5+
import androidx.compose.runtime.setValue
36
import co.touchlab.kermit.Logger
47
import site.remlit.snowdrop.api.getInstance
58

@@ -14,11 +17,17 @@ enum class Software {
1417
IceshrimpNET
1518
}
1619

20+
/**
21+
* If determineFeatures() is actively running.
22+
* */
23+
var determiningFeatures by mutableStateOf(false)
24+
1725
/**
1826
* Object of mutable states which advertise the current supported
1927
* features of the logged in account.
2028
* */
2129
suspend fun determineFeatures() {
30+
determiningFeatures = true
2231
var software = Software.Mastodon
2332

2433
val res = getInstance(auth = true)
@@ -59,6 +68,8 @@ suspend fun determineFeatures() {
5968
software == Software.IceshrimpNET
6069
) putFeature("reactions", true)
6170
else putFeature("reactions", false)
71+
72+
determiningFeatures = false
6273
}
6374

6475
fun resetFeatures() = blockingSettings.keys.filter {
@@ -77,7 +88,7 @@ fun getFeature(feature: String): Boolean {
7788
)
7889

7990
// feature set may have updated, so check again!
80-
if (enabled == null) bgIO { determineFeatures() }
91+
if (enabled == null && !determiningFeatures) bgIO { determineFeatures() }
8192

8293
return enabled ?: false
8394
}

0 commit comments

Comments
 (0)