11package site.remlit.snowdrop.util
22
3+ import androidx.compose.runtime.getValue
4+ import androidx.compose.runtime.mutableStateOf
5+ import androidx.compose.runtime.setValue
36import co.touchlab.kermit.Logger
47import 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 * */
2129suspend 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
6475fun 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