diff --git a/app/src/acad/res/xml/file_paths.xml b/app/src/acad/res/xml/file_paths.xml
index 4175376..98f5c4b 100644
--- a/app/src/acad/res/xml/file_paths.xml
+++ b/app/src/acad/res/xml/file_paths.xml
@@ -3,4 +3,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/fdroid_acad/AndroidManifest.xml b/app/src/fdroid_acad/AndroidManifest.xml
index c26ac39..2e0a051 100644
--- a/app/src/fdroid_acad/AndroidManifest.xml
+++ b/app/src/fdroid_acad/AndroidManifest.xml
@@ -16,13 +16,15 @@
+ tools:node="merge"
+ android:exported="true">
+
diff --git a/app/src/google_acad/AndroidManifest.xml b/app/src/google_acad/AndroidManifest.xml
index bc65866..c076383 100644
--- a/app/src/google_acad/AndroidManifest.xml
+++ b/app/src/google_acad/AndroidManifest.xml
@@ -24,7 +24,8 @@
-
+
+
diff --git a/app/src/main/java/app/fedilab/fedilabtube/activities/WebviewConnectActivity.java b/app/src/main/java/app/fedilab/fedilabtube/activities/WebviewConnectActivity.java
index 86a3f29..ea8577d 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/activities/WebviewConnectActivity.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/activities/WebviewConnectActivity.java
@@ -26,6 +26,7 @@ import android.view.MenuItem;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
+import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -39,7 +40,6 @@ import java.util.regex.Matcher;
import app.fedilab.fedilabtube.BuildConfig;
import app.fedilab.fedilabtube.R;
import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
-import app.fedilab.fedilabtube.client.entities.AcadInstances;
import app.fedilab.fedilabtube.client.entities.Error;
import app.fedilab.fedilabtube.client.entities.OauthParams;
import app.fedilab.fedilabtube.client.entities.Token;
@@ -137,6 +137,53 @@ public class WebviewConnectActivity extends BaseActivity {
}
@Override
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
+ if( request.getUrl() != null) {
+ String url = request.getUrl().toString();
+ Matcher matcher = Helper.redirectPattern.matcher(url);
+ if (matcher.find()) {
+ String externalAuthToken = matcher.group(1);
+ String username = matcher.group(2);
+ new Thread(() -> {
+ try {
+ OauthParams oauthParams = new OauthParams();
+ oauthParams.setClient_id(sharedpreferences.getString(Helper.CLIENT_ID, null));
+ oauthParams.setClient_secret(sharedpreferences.getString(Helper.CLIENT_SECRET, null));
+ oauthParams.setGrant_type("password");
+ oauthParams.setScope("upload");
+ oauthParams.setResponse_type("code");
+ oauthParams.setUsername(username);
+ oauthParams.setExternalAuthToken(externalAuthToken);
+ oauthParams.setPassword(externalAuthToken);
+ String instance = new URL(url).getHost();
+ Token token = null;
+ try {
+ token = new RetrofitPeertubeAPI(WebviewConnectActivity.this, instance, null).manageToken(oauthParams);
+ } catch (Error error) {
+ error.printStackTrace();
+ Error.displayError(WebviewConnectActivity.this, error);
+ }
+ if (token != null) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token.getAccess_token());
+ editor.putString(Helper.PREF_SOFTWARE, null);
+ editor.putString(Helper.PREF_REMOTE_INSTANCE, null);
+ editor.putString(Helper.PREF_INSTANCE, instance);
+ editor.apply();
+ updateCredential(WebviewConnectActivity.this, token.getAccess_token(), clientId, clientSecret, token.getRefresh_token(), new URL(url).getHost(), null);
+ finish();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }).start();
+ return true;
+ }
+ }
+ return super.shouldOverrideUrlLoading(view, request);
+ }
+
+ /* @Override
public void onPageFinished(WebView view, String url) {
Matcher matcher = Helper.redirectPattern.matcher(url);
if (matcher.find()) {
@@ -177,7 +224,7 @@ public class WebviewConnectActivity extends BaseActivity {
}).start();
}
super.onPageFinished(view, url);
- }
+ }*/
});
webView.loadUrl(url);
diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java
index ec7e606..667301a 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java
@@ -205,7 +205,7 @@ public class PlaylistAdapter extends RecyclerView.Adapter {
- File file = null;
+ File file;
RetrofitPeertubeAPI retrofitPeertubeAPI = new RetrofitPeertubeAPI(context);
APIResponse apiResponse = retrofitPeertubeAPI.playlistAction(GET_LIST_VIDEOS, playlist.getId(), null, null, null);
if (apiResponse != null) {
@@ -219,12 +219,14 @@ public class PlaylistAdapter extends RecyclerView.Adapter futureBitmapChannel = Glide.with(context.getApplicationContext())
- .asBitmap()
- .load(urlAvatar != null ? urlAvatar : R.drawable.missing_peertube).submit();
- Bitmap icon = null;
- try {
- icon = futureBitmapChannel.get();
- } catch (ExecutionException | InterruptedException e) {
- e.printStackTrace();
- }
- if (file != null) {
+ String urlAvatar = playlist.getThumbnailPath() != null ? HelperInstance.getLiveInstance(context) + playlist.getThumbnailPath() : null;
+ FutureTarget futureBitmapChannel = Glide.with(context.getApplicationContext())
+ .asBitmap()
+ .load(urlAvatar != null ? urlAvatar : R.drawable.missing_peertube).submit();
+ Bitmap icon = null;
+ try {
+ icon = futureBitmapChannel.get();
+ } catch (ExecutionException | InterruptedException e) {
+ e.printStackTrace();
+ }
Intent mailIntent = new Intent(Intent.ACTION_SEND);
mailIntent.setType("message/rfc822");
- Uri contentUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileProvider", file);
+ Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID+".fileProvider", file);
mailIntent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.export_notification_subjet));
mailIntent.putExtra(Intent.EXTRA_TEXT, context.getString(R.string.export_notification_body));
mailIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
+ mailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
NotificationHelper.notify_user(context.getApplicationContext(),
playlist.getOwnerAccount(), mailIntent, icon,
context.getString(R.string.export_notification_title),
context.getString(R.string.export_notification_content));
}
-
}).start();
}
diff --git a/app/src/main/java/app/fedilab/fedilabtube/helper/NotificationHelper.java b/app/src/main/java/app/fedilab/fedilabtube/helper/NotificationHelper.java
index ed75dc1..aff767b 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/helper/NotificationHelper.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/helper/NotificationHelper.java
@@ -17,6 +17,7 @@ package app.fedilab.fedilabtube.helper;
import static app.fedilab.fedilabtube.worker.NotificationsWorker.FETCH_NOTIFICATION_CHANNEL_ID;
+import android.annotation.SuppressLint;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -45,10 +46,16 @@ public class NotificationHelper {
* @param title String title of the notification
* @param message String message for the notification
*/
+ @SuppressLint("UnspecifiedImmutableFlag")
public static void notify_user(Context context, AccountData.Account account, Intent intent, Bitmap icon, String title, String message) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = (int) System.currentTimeMillis();
- PendingIntent pIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_ONE_SHOT);
+ PendingIntent pIntent;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
+ pIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_ONE_SHOT|PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ pIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_ONE_SHOT);
+ }
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP);
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
diff --git a/app/src/main/java/app/fedilab/fedilabtube/helper/PlaylistExportHelper.java b/app/src/main/java/app/fedilab/fedilabtube/helper/PlaylistExportHelper.java
index df11d93..51f7d44 100644
--- a/app/src/main/java/app/fedilab/fedilabtube/helper/PlaylistExportHelper.java
+++ b/app/src/main/java/app/fedilab/fedilabtube/helper/PlaylistExportHelper.java
@@ -81,7 +81,7 @@ public class PlaylistExportHelper {
try {
cursor = activity.getContentResolver().query(intent.getData(), null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
- filename = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+ filename = cursor.getString(cursor.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME));
}
} finally {
assert cursor != null;