mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-04-20 03:24:50 +00:00
add subscription submission dialog
This commit is contained in:
parent
2bcd59cbfa
commit
77a558dbe5
3 changed files with 74 additions and 13 deletions
|
@ -6,6 +6,7 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.text.Layout
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
import android.util.TypedValue
|
||||
import android.view.Gravity
|
||||
|
@ -198,7 +199,6 @@ class UIDialogs {
|
|||
dialog.show();
|
||||
}
|
||||
|
||||
|
||||
fun showDialog(context: Context, icon: Int, text: String, textDetails: String? = null, code: String? = null, defaultCloseAction: Int, vararg actions: Action) {
|
||||
val builder = AlertDialog.Builder(context);
|
||||
val view = LayoutInflater.from(context).inflate(R.layout.dialog_multi_button, null);
|
||||
|
@ -214,18 +214,20 @@ class UIDialogs {
|
|||
this.text = text;
|
||||
};
|
||||
view.findViewById<TextView>(R.id.dialog_text_details).apply {
|
||||
if(textDetails == null)
|
||||
if (textDetails == null)
|
||||
this.visibility = View.GONE;
|
||||
else
|
||||
else {
|
||||
this.text = textDetails;
|
||||
this.textAlignment = View.TEXT_ALIGNMENT_VIEW_START
|
||||
}
|
||||
};
|
||||
view.findViewById<TextView>(R.id.dialog_text_code).apply {
|
||||
if(code == null)
|
||||
this.visibility = View.GONE;
|
||||
if (code == null) this.visibility = View.GONE;
|
||||
else {
|
||||
this.text = code;
|
||||
this.movementMethod = ScrollingMovementMethod.getInstance();
|
||||
this.visibility = View.VISIBLE;
|
||||
this.textAlignment = View.TEXT_ALIGNMENT_VIEW_START
|
||||
}
|
||||
};
|
||||
view.findViewById<LinearLayout>(R.id.dialog_buttons).apply {
|
||||
|
|
|
@ -33,6 +33,7 @@ import com.futo.platformplayer.BuildConfig
|
|||
import com.futo.platformplayer.R
|
||||
import com.futo.platformplayer.Settings
|
||||
import com.futo.platformplayer.UIDialogs
|
||||
import com.futo.platformplayer.api.http.ManagedHttpClient
|
||||
import com.futo.platformplayer.casting.StateCasting
|
||||
import com.futo.platformplayer.constructs.Event1
|
||||
import com.futo.platformplayer.fragment.mainactivity.bottombar.MenuBottomBarFragment
|
||||
|
@ -88,6 +89,7 @@ import com.futo.polycentric.core.ApiMethods
|
|||
import com.google.gson.JsonParser
|
||||
import com.google.zxing.integration.android.IntentIntegrator
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -101,7 +103,9 @@ import java.lang.reflect.InvocationTargetException
|
|||
import java.util.LinkedList
|
||||
import java.util.Queue
|
||||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import org.json.JSONArray
|
||||
|
||||
class MainActivity : AppCompatActivity, IWithResultLauncher {
|
||||
|
||||
|
@ -444,7 +448,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
|
|||
_fragSubGroupList.topBar = _fragTopBarAdd;
|
||||
|
||||
_fragBrowser.topBar = _fragTopBarNavigation;
|
||||
|
||||
|
||||
fragCurrent = _fragMainHome;
|
||||
|
||||
val defaultTab = Settings.instance.tabs.mapNotNull {
|
||||
|
@ -507,14 +511,68 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
|
|||
|
||||
//startActivity(Intent(this, TestActivity::class.java));
|
||||
|
||||
val sharedPreferences = getSharedPreferences("GrayjayFirstBoot", Context.MODE_PRIVATE)
|
||||
val isFirstBoot = sharedPreferences.getBoolean("IsFirstBoot", true)
|
||||
val sharedPreferencesFirstBoot = getSharedPreferences("GrayjayFirstBoot", Context.MODE_PRIVATE)
|
||||
val isFirstBoot = sharedPreferencesFirstBoot.getBoolean("IsFirstBoot", true)
|
||||
if (isFirstBoot) {
|
||||
UIDialogs.showConfirmationDialog(this, getString(R.string.do_you_want_to_see_the_tutorials_you_can_find_them_at_any_time_through_the_more_button), {
|
||||
navigate(_fragMainTutorial)
|
||||
})
|
||||
|
||||
sharedPreferences.edit().putBoolean("IsFirstBoot", false).apply()
|
||||
sharedPreferencesFirstBoot.edit().putBoolean("IsFirstBoot", false).apply()
|
||||
}
|
||||
|
||||
val sharedPreferencesSubmitSubscriptions =
|
||||
getSharedPreferences("GrayjaySubmitSubscriptions", Context.MODE_PRIVATE)
|
||||
val alreadyViewed = sharedPreferencesSubmitSubscriptions.getBoolean("AlreadyViewed", false)
|
||||
|
||||
@Serializable
|
||||
data class CreatorInfo(val pluginId: String, val plugin: String, val id: String, val name: String, val url: String, val description: String, val subscribers: Long)
|
||||
|
||||
val subscriptions = StateSubscriptions.instance.getSubscriptions().map { original ->
|
||||
CreatorInfo(
|
||||
pluginId = original.channel.id.pluginId ?: "",
|
||||
plugin = original.channel.id.platform,
|
||||
id = original.channel.id.value ?: "",
|
||||
name = original.channel.name,
|
||||
url = original.channel.url,
|
||||
description = original.channel.description ?: "",
|
||||
subscribers = original.channel.subscribers,
|
||||
)
|
||||
}
|
||||
|
||||
val subscriptionsThreshold = 20
|
||||
|
||||
if (
|
||||
!alreadyViewed
|
||||
&& StateApp.instance.getCurrentNetworkState() != StateApp.NetworkState.DISCONNECTED
|
||||
&& subscriptions.size >= subscriptionsThreshold
|
||||
) {
|
||||
val json = Json.encodeToString(subscriptions)
|
||||
UIDialogs.showDialog(
|
||||
this,
|
||||
R.drawable.ic_internet,
|
||||
getString(R.string.donate_personal_subscriptions_list),
|
||||
getString(R.string.donate_personal_subscriptions_list_description),
|
||||
JSONArray(json).toString(4),
|
||||
0,
|
||||
UIDialogs.Action("Cancel", { }, UIDialogs.ActionStyle.NONE),
|
||||
UIDialogs.Action("Upload", {
|
||||
GlobalScope.launch(Dispatchers.IO) {
|
||||
val url = "https://logs.grayjay.app/subscriptions"
|
||||
val client = ManagedHttpClient();
|
||||
val headers = hashMapOf(
|
||||
"Content-Type" to "application/json"
|
||||
)
|
||||
val response = client.post(url, json, headers)
|
||||
// if it failed retry one time
|
||||
if (!response.isOk) {
|
||||
client.post(url, json, headers)
|
||||
}
|
||||
}
|
||||
}, UIDialogs.ActionStyle.PRIMARY)
|
||||
)
|
||||
|
||||
sharedPreferencesSubmitSubscriptions.edit().putBoolean("AlreadyViewed", true).apply()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -992,7 +1050,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
|
|||
Logger.i(TAG, "Navigate to $segment (parameter=$parameter, withHistory=$withHistory, isBack=$isBack)")
|
||||
|
||||
if(segment != fragCurrent) {
|
||||
|
||||
|
||||
if(segment is VideoDetailFragment) {
|
||||
if(_fragContainerVideoDetail.visibility != View.VISIBLE)
|
||||
_fragContainerVideoDetail.visibility = View.VISIBLE;
|
||||
|
@ -1004,8 +1062,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
|
|||
segment.onShown(parameter, isBack);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
fragCurrent.onHide();
|
||||
|
||||
if(segment.isMainView) {
|
||||
|
|
|
@ -803,6 +803,8 @@
|
|||
<string name="scroll_to_top">Scroll to top</string>
|
||||
<string name="disable_battery_optimization">Disable Battery Optimization</string>
|
||||
<string name="click_to_go_to_battery_optimization_settings_disabling_battery_optimization_will_prevent_the_os_from_killing_media_sessions">Click to go to battery optimization settings. Disabling battery optimization will prevent the OS from killing media sessions.</string>
|
||||
<string name="donate_personal_subscriptions_list">Donate Personal Subscriptions List</string>
|
||||
<string name="donate_personal_subscriptions_list_description">\nWould you liked to donate your current creator subscriptions list to Grayjay?\n\nThe data will be handled according to the Grayjay privacy policy. That is the list will be anonymized and stored without any reference to whomever the list of creators belonged to.\n\nThe intention is for Grayjay and FUTO to use these data to build a cross platform creator recommendation system to make it easier to find new creators you might like from within Grayjay.\n\nThe following data will be uploaded:</string>
|
||||
<string-array name="home_screen_array">
|
||||
<item>Recommendations</item>
|
||||
<item>Subscriptions</item>
|
||||
|
|
Loading…
Add table
Reference in a new issue