1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-07-28 23:02:58 +00:00

Display dialog informing the user about the removal of the Top 50 kiosk

This commit is contained in:
tobigr 2025-07-18 12:13:51 +02:00 committed by TobiGr
parent 7e0ee4eb7a
commit 941f85781b
3 changed files with 36 additions and 1 deletions

View File

@ -80,6 +80,7 @@ import org.schabi.newpipe.player.Player;
import org.schabi.newpipe.player.event.OnKeyDownListener;
import org.schabi.newpipe.player.helper.PlayerHolder;
import org.schabi.newpipe.player.playqueue.PlayQueue;
import org.schabi.newpipe.settings.SettingMigrations;
import org.schabi.newpipe.settings.UpdateSettingsFragment;
import org.schabi.newpipe.util.Constants;
import org.schabi.newpipe.util.DeviceUtils;
@ -197,6 +198,7 @@ public class MainActivity extends AppCompatActivity {
}
Localization.migrateAppLanguageSettingIfNecessary(getApplicationContext());
SettingMigrations.showUserInfoIfPresent(this);
}
@Override

View File

@ -5,6 +5,8 @@ import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.util.Consumer;
import androidx.preference.PreferenceManager;
import org.schabi.newpipe.App;
@ -12,11 +14,11 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.error.ErrorInfo;
import org.schabi.newpipe.error.ErrorUtil;
import org.schabi.newpipe.error.UserAction;
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.settings.tabs.Tab;
import org.schabi.newpipe.settings.tabs.TabsManager;
import org.schabi.newpipe.util.DeviceUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@ -38,6 +40,12 @@ public final class SettingMigrations {
private static final String TAG = SettingMigrations.class.toString();
private static SharedPreferences sp;
/**
* List of UI actions that are performed after the UI is initialized
* to inform the user about changes that were applied by migrations.
*/
private static final List<Consumer<Context>> MIGRATION_INFO = new ArrayList<>();
private static final Migration MIGRATION_0_1 = new Migration(0, 1) {
@Override
public void migrate(@NonNull final Context context) {
@ -163,6 +171,14 @@ public final class SettingMigrations {
.collect(Collectors.toUnmodifiableList());
if (tabs.size() != cleanedTabs.size()) {
tabsManager.saveTabs(cleanedTabs);
// create an AlertDialog to inform the user about the change
MIGRATION_INFO.add((Context uiContext) -> new AlertDialog.Builder(uiContext)
.setTitle(R.string.migration_info_6_7_title)
.setMessage(R.string.migration_info_6_7_message)
.setPositiveButton(R.string.ok, null)
.setCancelable(false)
.create()
.show());
}
}
};
@ -233,6 +249,21 @@ public final class SettingMigrations {
sp.edit().putInt(lastPrefVersionKey, currentVersion).apply();
}
/**
* Perform UI actions informing about migrations that took place if they are present.
* @param context Context that can be used to show dialogs/snackbars/toasts
*/
public static void showUserInfoIfPresent(@NonNull final Context context) {
for (final Consumer<Context> consumer : MIGRATION_INFO) {
try {
consumer.accept(context);
} catch (final Exception e) {
ErrorUtil.showUiErrorSnackbar(context, "Showing migration info to the user", e);
}
}
MIGRATION_INFO.clear();
}
private SettingMigrations() { }
abstract static class Migration {

View File

@ -865,4 +865,6 @@
<string name="show_more">Show more</string>
<string name="show_less">Show less</string>
<string name="import_settings_vulnerable_format">The settings in the export being imported use a vulnerable format that was deprecated since NewPipe 0.27.0. Make sure the export being imported is from a trusted source, and prefer using only exports obtained from NewPipe 0.27.0 or newer in the future. Support for importing settings in this vulnerable format will soon be removed completely, and then old versions of NewPipe will not be able to import settings of exports from new versions anymore.</string>
<string name="migration_info_6_7_title">SoundCloud Top 50 page removed</string>
<string name="migration_info_6_7_message">SoundCloud has discontinued the original Top 50 charts. The corresponding tab has been removed from your main page.</string>
</resources>