mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-27 19:38:22 +01:00
Version 5.3.1.
This commit is contained in:
parent
6d224c307d
commit
84b5b1d95d
@ -6,8 +6,8 @@ android {
|
||||
applicationId "ml.docilealligator.infinityforreddit"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 31
|
||||
versionCode 102
|
||||
versionName "5.3.0"
|
||||
versionCode 103
|
||||
versionName "5.3.1"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
@ -77,6 +77,7 @@ dependencies {
|
||||
implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayerVersion"
|
||||
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayerVersion"
|
||||
implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayerVersion"
|
||||
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:$exoplayerVersion"
|
||||
/*def toroVersion = "3.7.0.2010003"
|
||||
implementation "im.ene.toro3:toro:$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.account.AccountDao;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
|
||||
public class SwitchToAnonymousMode {
|
||||
public static void switchToAnonymousMode(RedditDataRoomDatabase redditDataRoomDatabase, SharedPreferences currentAccountSharedPreferences,
|
||||
@ -19,7 +20,9 @@ public class SwitchToAnonymousMode {
|
||||
}
|
||||
accountDao.markAllAccountsNonCurrent();
|
||||
|
||||
String redgifsAccessToken = currentAccountSharedPreferences.getString(SharedPreferencesUtils.REDGIFS_ACCESS_TOKEN, "");
|
||||
currentAccountSharedPreferences.edit().clear().apply();
|
||||
currentAccountSharedPreferences.edit().putString(SharedPreferencesUtils.REDGIFS_ACCESS_TOKEN, redgifsAccessToken).apply();
|
||||
|
||||
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.DefaultDashChunkSource;
|
||||
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;
|
||||
|
||||
/**
|
||||
@ -59,11 +61,11 @@ public interface MediaSourceBuilder {
|
||||
@ContentType int type = isEmpty(ext) ? inferContentType(uri) : inferContentType("." + ext);
|
||||
MediaSource result;
|
||||
switch (type) {
|
||||
/*case C.TYPE_SS:
|
||||
result = new SsMediaSource.Factory( //
|
||||
new DefaultSsChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)//
|
||||
case C.TYPE_SS:
|
||||
result = new SsMediaSource.Factory(
|
||||
new DefaultSsChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)
|
||||
.createMediaSource(uri);
|
||||
break;*/
|
||||
break;
|
||||
case C.TYPE_DASH:
|
||||
result = new DashMediaSource.Factory(
|
||||
new DefaultDashChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory)
|
||||
|
Loading…
Reference in New Issue
Block a user