mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-28 11:58:23 +01:00
Version 5.3.1.
This commit is contained in:
parent
6d224c307d
commit
84b5b1d95d
@ -6,8 +6,8 @@ android {
|
|||||||
applicationId "ml.docilealligator.infinityforreddit"
|
applicationId "ml.docilealligator.infinityforreddit"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 31
|
targetSdkVersion 31
|
||||||
versionCode 102
|
versionCode 103
|
||||||
versionName "5.3.0"
|
versionName "5.3.1"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
javaCompileOptions {
|
javaCompileOptions {
|
||||||
annotationProcessorOptions {
|
annotationProcessorOptions {
|
||||||
@ -77,6 +77,7 @@ dependencies {
|
|||||||
implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayerVersion"
|
implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayerVersion"
|
||||||
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayerVersion"
|
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayerVersion"
|
||||||
implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayerVersion"
|
implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayerVersion"
|
||||||
|
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:$exoplayerVersion"
|
||||||
/*def toroVersion = "3.7.0.2010003"
|
/*def toroVersion = "3.7.0.2010003"
|
||||||
implementation "im.ene.toro3:toro:$toroVersion"
|
implementation "im.ene.toro3:toro:$toroVersion"
|
||||||
implementation("im.ene.toro3:toro-ext-exoplayer:$toroVersion") {
|
implementation("im.ene.toro3:toro-ext-exoplayer:$toroVersion") {
|
||||||
|
@ -7,6 +7,7 @@ import java.util.concurrent.Executor;
|
|||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.account.AccountDao;
|
import ml.docilealligator.infinityforreddit.account.AccountDao;
|
||||||
|
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||||
|
|
||||||
public class SwitchToAnonymousMode {
|
public class SwitchToAnonymousMode {
|
||||||
public static void switchToAnonymousMode(RedditDataRoomDatabase redditDataRoomDatabase, SharedPreferences currentAccountSharedPreferences,
|
public static void switchToAnonymousMode(RedditDataRoomDatabase redditDataRoomDatabase, SharedPreferences currentAccountSharedPreferences,
|
||||||
@ -19,7 +20,9 @@ public class SwitchToAnonymousMode {
|
|||||||
}
|
}
|
||||||
accountDao.markAllAccountsNonCurrent();
|
accountDao.markAllAccountsNonCurrent();
|
||||||
|
|
||||||
|
String redgifsAccessToken = currentAccountSharedPreferences.getString(SharedPreferencesUtils.REDGIFS_ACCESS_TOKEN, "");
|
||||||
currentAccountSharedPreferences.edit().clear().apply();
|
currentAccountSharedPreferences.edit().clear().apply();
|
||||||
|
currentAccountSharedPreferences.edit().putString(SharedPreferencesUtils.REDGIFS_ACCESS_TOKEN, redgifsAccessToken).apply();
|
||||||
|
|
||||||
handler.post(switchToAnonymousAccountAsyncTaskListener::logoutSuccess);
|
handler.post(switchToAnonymousAccountAsyncTaskListener::logoutSuccess);
|
||||||
});
|
});
|
||||||
|
@ -1,188 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018 Nam Nguyen, nam@ene.im
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package ml.docilealligator.infinityforreddit.videoautoplay;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.google.android.exoplayer2.source.ads.AdsLoader;
|
|
||||||
import com.google.android.exoplayer2.ui.PlayerView;
|
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.videoautoplay.annotations.Beta;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ToroPlayerHelper} to integrate ExoPlayer IMA Extension. Work together with {@link
|
|
||||||
* AdsPlayable}.
|
|
||||||
*
|
|
||||||
* @author eneim (2018/08/22).
|
|
||||||
* @since 3.6.0.2802
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unused") @Beta //
|
|
||||||
public class AdsExoPlayerViewHelper extends ExoPlayerViewHelper {
|
|
||||||
|
|
||||||
static class DefaultAdViewProvider implements AdsLoader.AdViewProvider {
|
|
||||||
|
|
||||||
@NonNull final ViewGroup viewGroup;
|
|
||||||
|
|
||||||
DefaultAdViewProvider(@NonNull ViewGroup viewGroup) {
|
|
||||||
this.viewGroup = viewGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public ViewGroup getAdViewGroup() {
|
|
||||||
return this.viewGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public View[] getAdOverlayViews() {
|
|
||||||
return new View[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static AdsPlayable createPlayable( ///
|
|
||||||
ToroPlayer player, //
|
|
||||||
ExoCreator creator, //
|
|
||||||
Uri contentUri, //
|
|
||||||
String fileExt, //
|
|
||||||
AdsLoader adsLoader, //
|
|
||||||
AdsLoader.AdViewProvider adViewProvider //
|
|
||||||
) {
|
|
||||||
return new AdsPlayable(creator, contentUri, fileExt, player, adsLoader, adViewProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static AdsPlayable createPlayable( //
|
|
||||||
ToroPlayer player, //
|
|
||||||
Config config, //
|
|
||||||
Uri contentUri, //
|
|
||||||
String fileExt, //
|
|
||||||
AdsLoader adsLoader, //
|
|
||||||
AdsLoader.AdViewProvider adViewProvider //
|
|
||||||
) {
|
|
||||||
Context context = player.getPlayerView().getContext();
|
|
||||||
return createPlayable(player, ToroExo.with(context).getCreator(config), contentUri, fileExt,
|
|
||||||
adsLoader, adViewProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static AdsPlayable createPlayable( //
|
|
||||||
ToroPlayer player, //
|
|
||||||
Uri contentUri, //
|
|
||||||
String fileExt, //
|
|
||||||
AdsLoader adsLoader, //
|
|
||||||
AdsLoader.AdViewProvider adViewProvider //
|
|
||||||
) {
|
|
||||||
Context context = player.getPlayerView().getContext();
|
|
||||||
return createPlayable(player, ToroExo.with(context).getDefaultCreator(), contentUri, fileExt,
|
|
||||||
adsLoader, adViewProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Neither ExoCreator nor Config are provided.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new {@link AdsExoPlayerViewHelper} for a {@link ToroPlayer} and {@link AdsLoader}.
|
|
||||||
*
|
|
||||||
* @param adContainer if {@code null} then overlay of {@link PlayerView} will be used.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer //
|
|
||||||
) {
|
|
||||||
super(player,
|
|
||||||
createPlayable(player, uri, fileExt, adsLoader,
|
|
||||||
adContainer != null ? new DefaultAdViewProvider(adContainer) : null));
|
|
||||||
}
|
|
||||||
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer, // will be ignored
|
|
||||||
@Nullable AdsLoader.AdViewProvider adViewProvider //
|
|
||||||
) {
|
|
||||||
super(player, createPlayable(player, uri, fileExt, adsLoader, adViewProvider));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExoCreator is provided.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new {@link AdsExoPlayerViewHelper} for a {@link ToroPlayer} and {@link AdsLoader}.
|
|
||||||
*
|
|
||||||
* @param adContainer if {@code null} then overlay of {@link PlayerView} will be used.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer, //
|
|
||||||
@NonNull ExoCreator creator //
|
|
||||||
) {
|
|
||||||
super(player, createPlayable(player, creator, uri, fileExt, adsLoader,
|
|
||||||
adContainer != null ? new DefaultAdViewProvider(adContainer) : null));
|
|
||||||
}
|
|
||||||
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer, // will be ignored
|
|
||||||
@Nullable AdsLoader.AdViewProvider adViewProvider, //
|
|
||||||
@NonNull ExoCreator creator //
|
|
||||||
) {
|
|
||||||
super(player, createPlayable(player, creator, uri, fileExt, adsLoader, adViewProvider));
|
|
||||||
}
|
|
||||||
// Config is provided.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new {@link AdsExoPlayerViewHelper} for a {@link ToroPlayer} and {@link AdsLoader}.
|
|
||||||
*
|
|
||||||
* @param adContainer if {@code null} then overlay of {@link PlayerView} will be used.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer, //
|
|
||||||
@NonNull Config config //
|
|
||||||
) {
|
|
||||||
super(player, createPlayable(player, config, uri, fileExt, adsLoader,
|
|
||||||
adContainer != null ? new DefaultAdViewProvider(adContainer) : null));
|
|
||||||
}
|
|
||||||
|
|
||||||
public AdsExoPlayerViewHelper( //
|
|
||||||
@NonNull ToroPlayer player, //
|
|
||||||
@NonNull Uri uri, //
|
|
||||||
@Nullable String fileExt, //
|
|
||||||
@NonNull AdsLoader adsLoader, //
|
|
||||||
@Nullable ViewGroup adContainer, // will be ignored
|
|
||||||
@Nullable AdsLoader.AdViewProvider adViewProvider, //
|
|
||||||
@NonNull Config config //
|
|
||||||
) {
|
|
||||||
super(player, createPlayable(player, config, uri, fileExt, adsLoader, adViewProvider));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018 Nam Nguyen, nam@ene.im
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package ml.docilealligator.infinityforreddit.videoautoplay;
|
|
||||||
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.annotation.CallSuper;
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.google.android.exoplayer2.C;
|
|
||||||
import com.google.android.exoplayer2.source.MediaSource;
|
|
||||||
import com.google.android.exoplayer2.source.ads.AdsLoader;
|
|
||||||
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
|
||||||
import com.google.android.exoplayer2.ui.PlayerView;
|
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.videoautoplay.annotations.Beta;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Playable} that is able to integrate with {@link AdsLoader}.
|
|
||||||
*
|
|
||||||
* @author eneim (2018/08/22).
|
|
||||||
* @since 3.6.0.2802
|
|
||||||
*/
|
|
||||||
@Beta //
|
|
||||||
public class AdsPlayable extends ExoPlayable {
|
|
||||||
|
|
||||||
static class FactoryImpl implements AdsMediaSource.MediaSourceFactory {
|
|
||||||
|
|
||||||
@NonNull final ExoCreator creator;
|
|
||||||
@NonNull final ToroPlayer player;
|
|
||||||
|
|
||||||
FactoryImpl(@NonNull ExoCreator creator, @NonNull ToroPlayer player) {
|
|
||||||
this.creator = creator;
|
|
||||||
this.player = player;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public MediaSource createMediaSource(Uri uri) {
|
|
||||||
return this.creator.createMediaSource(uri, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public int[] getSupportedTypes() {
|
|
||||||
// IMA does not support Smooth Streaming ads.
|
|
||||||
return new int[] { C.TYPE_DASH, C.TYPE_HLS, C.TYPE_OTHER };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull private final AdsLoader adsLoader;
|
|
||||||
@NonNull private final FactoryImpl factory;
|
|
||||||
@Nullable private final AdsLoader.AdViewProvider adViewProvider;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use the constructors that use {@link AdsLoader.AdViewProvider} instead.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public AdsPlayable(ExoCreator creator, Uri uri, String fileExt, ToroPlayer player,
|
|
||||||
@NonNull AdsLoader adsLoader, @Nullable final ViewGroup adsContainer) {
|
|
||||||
super(creator, uri, fileExt);
|
|
||||||
this.adsLoader = adsLoader;
|
|
||||||
this.adViewProvider = adsContainer == null ? null
|
|
||||||
: new AdsExoPlayerViewHelper.DefaultAdViewProvider(adsContainer);
|
|
||||||
this.factory = new FactoryImpl(this.creator, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("WeakerAccess")
|
|
||||||
public AdsPlayable(ExoCreator creator, Uri uri, String fileExt, ToroPlayer player,
|
|
||||||
@NonNull AdsLoader adsLoader, @Nullable AdsLoader.AdViewProvider adViewProvider) {
|
|
||||||
super(creator, uri, fileExt);
|
|
||||||
this.adsLoader = adsLoader;
|
|
||||||
this.adViewProvider = adViewProvider;
|
|
||||||
this.factory = new FactoryImpl(this.creator, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@CallSuper
|
|
||||||
@Override public void prepare(boolean prepareSource) {
|
|
||||||
this.mediaSource = createAdsMediaSource(creator, mediaUri, fileExt, //
|
|
||||||
factory.player, adsLoader, adViewProvider, factory);
|
|
||||||
super.prepare(prepareSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override protected void beforePrepareMediaSource() {
|
|
||||||
super.beforePrepareMediaSource();
|
|
||||||
adsLoader.setPlayer(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public void release() {
|
|
||||||
adsLoader.setPlayer(null);
|
|
||||||
super.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static MediaSource createAdsMediaSource(ExoCreator creator, Uri uri, String fileExt,
|
|
||||||
ToroPlayer player, AdsLoader adsLoader, AdsLoader.AdViewProvider adViewProvider,
|
|
||||||
AdsMediaSource.MediaSourceFactory factory) {
|
|
||||||
MediaSource original = creator.createMediaSource(uri, fileExt);
|
|
||||||
View playerView = player.getPlayerView();
|
|
||||||
if (!(playerView instanceof PlayerView)) {
|
|
||||||
throw new IllegalArgumentException("Require PlayerView");
|
|
||||||
}
|
|
||||||
|
|
||||||
return new AdsMediaSource(original, factory, adsLoader,
|
|
||||||
adViewProvider == null ? (PlayerView) playerView : adViewProvider);
|
|
||||||
}
|
|
||||||
}
|
|
@ -35,6 +35,8 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
|
|||||||
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
|
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
|
||||||
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
||||||
|
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
|
||||||
|
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
||||||
import com.google.android.exoplayer2.upstream.DataSource;
|
import com.google.android.exoplayer2.upstream.DataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,11 +61,11 @@ public interface MediaSourceBuilder {
|
|||||||
@ContentType int type = isEmpty(ext) ? inferContentType(uri) : inferContentType("." + ext);
|
@ContentType int type = isEmpty(ext) ? inferContentType(uri) : inferContentType("." + ext);
|
||||||
MediaSource result;
|
MediaSource result;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
/*case C.TYPE_SS:
|
case C.TYPE_SS:
|
||||||
result = new SsMediaSource.Factory( //
|
result = new SsMediaSource.Factory(
|
||||||
new DefaultSsChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)//
|
new DefaultSsChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)
|
||||||
.createMediaSource(uri);
|
.createMediaSource(uri);
|
||||||
break;*/
|
break;
|
||||||
case C.TYPE_DASH:
|
case C.TYPE_DASH:
|
||||||
result = new DashMediaSource.Factory(
|
result = new DashMediaSource.Factory(
|
||||||
new DefaultDashChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)
|
new DefaultDashChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)
|
||||||
|
Loading…
Reference in New Issue
Block a user