diff --git a/app/src/acad/res/values/strings.xml b/app/src/acad/res/values/strings.xml
index f8578df..671d716 100644
--- a/app/src/acad/res/values/strings.xml
+++ b/app/src/acad/res/values/strings.xml
@@ -18,6 +18,9 @@
Vidéos dans une liste
Change la mise en page pour afficher les vidéos dans une liste
+ Réessayer
+ Échec de rafraîchissement du jeton d\'accès
+ Vous pouvez réessayer de le rafraîchir ou simplement déconnecter le compte
Exporter
Importer
Date de publication
diff --git a/app/src/full/res/values/strings.xml b/app/src/full/res/values/strings.xml
index b190628..88bd203 100644
--- a/app/src/full/res/values/strings.xml
+++ b/app/src/full/res/values/strings.xml
@@ -105,6 +105,9 @@
- 12 hours
+ Retry
+ Token refresh failed!
+ You can retry this action or simply disconnect the current account
Yes
No
Cancel
diff --git a/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java b/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
index 8139593..6a2af56 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/MainActivity.java
@@ -24,6 +24,7 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -194,6 +195,7 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ Log.v(Helper.TAG, "onCreate: " + savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
@@ -238,7 +240,7 @@ public class MainActivity extends AppCompatActivity {
mostLikedFragment.setArguments(bundle);
overviewFragment = new DisplayOverviewFragment();
-
+ Log.v(Helper.TAG, "Helper.isLoggedIn(MainActivity.this): " + Helper.isLoggedIn(MainActivity.this));
if (!Helper.isLoggedIn(MainActivity.this)) {
PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
binding.viewpager.setAdapter(mPagerAdapter);
@@ -278,73 +280,7 @@ public class MainActivity extends AppCompatActivity {
if (Helper.isLoggedIn(MainActivity.this)) {
navView.inflateMenu(R.menu.bottom_nav_menu_connected);
- new Thread(() -> {
- final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
- String tokenStr = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);
- String instance = Helper.getLiveInstance(MainActivity.this);
- SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
- String instanceShar = sharedpreferences.getString(Helper.PREF_INSTANCE, null);
- String userIdShar = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
- Account account = new AccountDAO(MainActivity.this, db).getAccountByToken(tokenStr);
- if (account == null) {
- account = new AccountDAO(MainActivity.this, db).getAccountByIdInstance(userIdShar, instanceShar);
- }
- if (account != null) {
- Account finalAccount = account;
- OauthParams oauthParams = new OauthParams();
- oauthParams.setGrant_type("refresh_token");
- oauthParams.setClient_id(account.getClient_id());
- oauthParams.setClient_secret(account.getClient_secret());
- oauthParams.setRefresh_token(account.getRefresh_token());
- oauthParams.setAccess_token(account.getToken());
- try {
- Token token = new RetrofitPeertubeAPI(MainActivity.this).manageToken(oauthParams);
- if (token == null && Helper.instanceOnline(instance)) {
- runOnUiThread(() -> Helper.logoutCurrentUser(MainActivity.this, finalAccount));
- return;
- } else if (token == null) {
- return;
- }
- runOnUiThread(() -> {
- //To avoid a token issue with subscriptions, adding fragment is done when the token is refreshed.
- new Handler().post(() -> {
- if (Helper.isLoggedIn(MainActivity.this)) {
- PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
- binding.viewpager.setAdapter(mPagerAdapter);
- }
- });
- });
-
- userMe = new RetrofitPeertubeAPI(MainActivity.this, instance, token.getAccess_token()).verifyCredentials();
- if (userMe != null && userMe.getAccount() != null) {
- new AccountDAO(MainActivity.this, db).updateAccount(userMe.getAccount());
- SharedPreferences.Editor editor = sharedpreferences.edit();
- editor.putString(Helper.PREF_KEY_ID, account.getId());
- editor.putString(Helper.PREF_KEY_NAME, account.getUsername());
- editor.putBoolean(getString(R.string.set_autoplay_choice), userMe.isAutoPlayVideo());
- editor.putBoolean(getString(R.string.set_store_in_history), userMe.isVideosHistoryEnabled());
- editor.putBoolean(getString(R.string.set_autoplay_next_video_choice), userMe.isAutoPlayNextVideo());
- editor.putString(getString(R.string.set_video_sensitive_choice), userMe.getNsfwPolicy());
- //Sync languages from server
- List videoLanguageServer = userMe.getVideoLanguages();
- if (videoLanguageServer != null) {
- Set videoLanguageServerSet = new TreeSet<>(videoLanguageServer);
- videoLanguageServerSet.addAll(videoLanguageServer);
- Set videoLanguageLocal = sharedpreferences.getStringSet(getString(R.string.set_video_language_choice), null);
- if (videoLanguageServerSet.size() > 0 && videoLanguageLocal != null) {
- videoLanguageServer.addAll(videoLanguageLocal);
- }
- editor.putStringSet(getString(R.string.set_video_language_choice), videoLanguageServerSet);
- editor.apply();
- }
- }
- instanceConfig = new RetrofitPeertubeAPI(MainActivity.this).getConfigInstance();
- } catch (Error error) {
- runOnUiThread(() -> Helper.logoutCurrentUser(MainActivity.this, finalAccount));
- error.printStackTrace();
- }
- }
- }).start();
+ refreshToken();
} else {
navView.inflateMenu(R.menu.bottom_nav_menu);
@@ -380,6 +316,92 @@ public class MainActivity extends AppCompatActivity {
}
}
+ private void refreshToken() {
+ new Thread(() -> {
+ final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ String tokenStr = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);
+ String instance = Helper.getLiveInstance(MainActivity.this);
+ SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
+ String instanceShar = sharedpreferences.getString(Helper.PREF_INSTANCE, null);
+ String userIdShar = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
+ Account account = new AccountDAO(MainActivity.this, db).getAccountByToken(tokenStr);
+ if (account == null) {
+ account = new AccountDAO(MainActivity.this, db).getAccountByIdInstance(userIdShar, instanceShar);
+ }
+ if (account != null) {
+ Account finalAccount = account;
+ OauthParams oauthParams = new OauthParams();
+ oauthParams.setGrant_type("refresh_token");
+ oauthParams.setClient_id(account.getClient_id());
+ oauthParams.setClient_secret(account.getClient_secret());
+ oauthParams.setRefresh_token(account.getRefresh_token());
+ oauthParams.setAccess_token(account.getToken());
+ try {
+ Token token = new RetrofitPeertubeAPI(MainActivity.this).manageToken(oauthParams);
+ if (token == null && Helper.instanceOnline(instance)) {
+ runOnUiThread(() -> {
+ AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
+ alt_bld.setTitle(R.string.refresh_token_failed);
+ alt_bld.setMessage(R.string.refresh_token_failed_message);
+ alt_bld.setNegativeButton(R.string.action_logout, (dialog, id) -> {
+ dialog.dismiss();
+ Helper.logoutCurrentUser(MainActivity.this, finalAccount);
+ });
+ alt_bld.setPositiveButton(R.string._retry, (dialog, id) -> {
+ dialog.dismiss();
+ refreshToken();
+ });
+ AlertDialog alert = alt_bld.create();
+ alert.show();
+
+ });
+ return;
+ } else if (token == null) {
+ return;
+ }
+ runOnUiThread(() -> {
+ //To avoid a token issue with subscriptions, adding fragment is done when the token is refreshed.
+ new Handler().post(() -> {
+ if (Helper.isLoggedIn(MainActivity.this)) {
+ PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
+ binding.viewpager.setAdapter(mPagerAdapter);
+ }
+ });
+ });
+
+ userMe = new RetrofitPeertubeAPI(MainActivity.this, instance, token.getAccess_token()).verifyCredentials();
+ if (userMe != null && userMe.getAccount() != null) {
+ new AccountDAO(MainActivity.this, db).updateAccount(userMe.getAccount());
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(Helper.PREF_KEY_ID, account.getId());
+ editor.putString(Helper.PREF_KEY_NAME, account.getUsername());
+ editor.putBoolean(getString(R.string.set_autoplay_choice), userMe.isAutoPlayVideo());
+ editor.putBoolean(getString(R.string.set_store_in_history), userMe.isVideosHistoryEnabled());
+ editor.putBoolean(getString(R.string.set_autoplay_next_video_choice), userMe.isAutoPlayNextVideo());
+ editor.putString(getString(R.string.set_video_sensitive_choice), userMe.getNsfwPolicy());
+ //Sync languages from server
+ List videoLanguageServer = userMe.getVideoLanguages();
+ if (videoLanguageServer != null) {
+ Set videoLanguageServerSet = new TreeSet<>(videoLanguageServer);
+ videoLanguageServerSet.addAll(videoLanguageServer);
+ Set videoLanguageLocal = sharedpreferences.getStringSet(getString(R.string.set_video_language_choice), null);
+ if (videoLanguageServerSet.size() > 0 && videoLanguageLocal != null) {
+ videoLanguageServer.addAll(videoLanguageLocal);
+ }
+ editor.putStringSet(getString(R.string.set_video_language_choice), videoLanguageServerSet);
+ editor.apply();
+ }
+ }
+ instanceConfig = new RetrofitPeertubeAPI(MainActivity.this).getConfigInstance();
+ } catch (Error error) {
+ runOnUiThread(() -> Helper.logoutCurrentUser(MainActivity.this, finalAccount));
+ error.printStackTrace();
+ }
+ }
+ }).start();
+ }
+
+
@Override
public boolean onCreateOptionsMenu(@NotNull Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
@@ -610,6 +632,7 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onNewIntent(Intent intent) {
+ Log.v(Helper.TAG, "onNewIntent: " + intent);
super.onNewIntent(intent);
if (intent == null)
return;
diff --git a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java
index f2b81fd..ed13797 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java
@@ -1519,7 +1519,7 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
}
break;
case AUTONEXT:
- binding.subMenuTitle.setText(R.string.set_autoplay);
+ binding.subMenuTitle.setText(R.string.set_autoplay_next_video_settings);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
boolean autoplayNextVideo = sharedpreferences.getBoolean(getString(R.string.set_autoplay_next_video_choice), true);
items.add(new MenuItemView(0, getString(R.string.no), !autoplayNextVideo));