diff --git a/mastodon/src/github/java/org/joinmastodon/android/updater/GithubSelfUpdaterImpl.java b/mastodon/src/github/java/org/joinmastodon/android/updater/GithubSelfUpdaterImpl.java index 89b0c4235..9ca406ff9 100644 --- a/mastodon/src/github/java/org/joinmastodon/android/updater/GithubSelfUpdaterImpl.java +++ b/mastodon/src/github/java/org/joinmastodon/android/updater/GithubSelfUpdaterImpl.java @@ -40,6 +40,7 @@ import okhttp3.Response; public class GithubSelfUpdaterImpl extends GithubSelfUpdater{ private static final long CHECK_PERIOD=6*3600*1000L; private static final String TAG="GithubSelfUpdater"; + private static String changelog; private UpdateState state=UpdateState.NO_UPDATE; private UpdateInfo info; @@ -109,6 +110,11 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{ MastodonAPIController.runInBackground(this::actuallyCheckForUpdates); } + @Override + public void getChangelog(){ + MastodonAPIController.runInBackground(this::actuallyGetChangelog); + } + private void actuallyCheckForUpdates(){ Request req=new Request.Builder() .url("https://api.github.com/repos/LucasGGamerM/moshidon/releases/latest") @@ -175,6 +181,35 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{ } } + public void actuallyGetChangelog(){ + String changelog = null; + Request req=new Request.Builder() + .url("https://api.github.com/repos/LucasGGamerM/moshidon/releases/latest") + .build(); + Call call=MastodonAPIController.getHttpClient().newCall(req); + try(Response resp=call.execute()){ + JsonObject obj=JsonParser.parseReader(resp.body().charStream()).getAsJsonObject(); + changelog=obj.get("body").getAsString(); + if(changelog == null){ + Log.w(TAG, "No changelog available"); + return; + } + }catch(Exception x){ + Log.w(TAG, "getChangelog: ", x); + }finally{ +// setState(changelog==null ? UpdateState.NO_UPDATE : UpdateState.UPDATE_AVAILABLE); + setChangelog(changelog); + } + } + + private void setChangelog(String changelog){ + this.changelog = changelog; + } + + public String getChangelogText(){ + return changelog; + } + private void setState(UpdateState state){ this.state=state; E.post(new SelfUpdateStateChangedEvent(state)); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 3f5fa9941..29051c15c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -3,6 +3,7 @@ package org.joinmastodon.android.fragments; import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.AlertDialog; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -49,6 +50,7 @@ import org.joinmastodon.android.ui.M3AlertDialogBuilder; import org.joinmastodon.android.ui.OutlineProviders; import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.updater.GithubSelfUpdater; +import org.w3c.dom.Text; import java.util.ArrayList; import java.util.function.Consumer; @@ -185,6 +187,9 @@ public class SettingsFragment extends MastodonToolbarFragment{ checkForUpdateItem = new TextItem(R.string.sk_check_for_update, GithubSelfUpdater.getInstance()::checkForUpdates); items.add(checkForUpdateItem); } +// TODO fix this up tomorrow, by probably just making another method for chacking and displaying the new changelog + items.add(new TextItem(R.string.sk_get_changelog, this::onGetChangelogClick)); + items.add(new TextItem(R.string.sk_settings_contribute, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/LucasGGamerM/moshidon"))); items.add(new TextItem(R.string.settings_clear_cache, this::clearImageCache)); items.add(new TextItem(R.string.sk_clear_recent_languages, ()->UiUtils.showConfirmationAlert(getActivity(), R.string.sk_clear_recent_languages, R.string.sk_confirm_clear_recent_languages, R.string.clear, ()->{ @@ -262,6 +267,12 @@ public class SettingsFragment extends MastodonToolbarFragment{ E.unregister(this); } + private void onGetChangelogClick(){ + AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext()); + alertDialogBuilder.setTitle("Something TODO remove this"); + alertDialogBuilder.setMessage(GithubSelfUpdater.getInstance().getChangelog()); + } + private void onThemePreferenceClick(GlobalUserPreferences.ThemePreference theme){ GlobalUserPreferences.theme=theme; GlobalUserPreferences.save(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/updater/GithubSelfUpdater.java b/mastodon/src/main/java/org/joinmastodon/android/updater/GithubSelfUpdater.java index 90a20e815..181e18e4f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/updater/GithubSelfUpdater.java +++ b/mastodon/src/main/java/org/joinmastodon/android/updater/GithubSelfUpdater.java @@ -39,6 +39,8 @@ public abstract class GithubSelfUpdater{ public abstract void cancelDownload(); + public abstract String getChangelog(); + public abstract void handleIntentFromInstaller(Intent intent, Activity activity); public enum UpdateState{ diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 1011dc6b7..b385de830 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -89,4 +89,5 @@ Reblog with visibility Post about this Hashtags you follow + Get changelog \ No newline at end of file