Skip to content

Commit cdf7b13

Browse files
committed
implement update checking
1 parent 2cd2e73 commit cdf7b13

File tree

4 files changed

+55
-39
lines changed

4 files changed

+55
-39
lines changed

app/src/main/java/dev/lucalewin/planer/AboutActivity.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
package dev.lucalewin.planer;
22

3-
import androidx.appcompat.app.AppCompatActivity;
4-
53
import android.os.Bundle;
64

7-
import com.google.android.material.button.MaterialButton;
8-
95
import de.dlyt.yanndroid.oneui.layout.AboutPage;
106
import dev.lucalewin.planer.base.BaseThemeActivity;
11-
import dev.lucalewin.planer.iserv.IservPlan;
12-
import dev.lucalewin.planer.iserv.web_scraping.TaskRunner;
13-
import dev.lucalewin.planer.util.Tuple;
14-
import dev.lucalewin.planer.version.Updater;
7+
import dev.lucalewin.planer.util.TaskRunner;
8+
import dev.lucalewin.planer.version.UpdateManager;
159

1610
public class AboutActivity extends BaseThemeActivity {
1711

@@ -24,9 +18,9 @@ protected void onCreate(Bundle savedInstanceState) {
2418

2519
about_page.setUpdateState(AboutPage.LOADING);
2620

27-
Updater updater = new Updater(this, "lucalewin", "planer");
21+
UpdateManager updater = UpdateManager.getInstance(this);
2822

29-
new TaskRunner().executeAsync(updater::isLatestVersionInstalled, (TaskRunner.Callback<Boolean>) (result) -> {
23+
new TaskRunner().executeAsync(updater::isLatestVersionInstalled, (result) -> {
3024
if (result) {
3125
about_page.setUpdateState(AboutPage.NO_UPDATE);
3226
} else {

app/src/main/java/dev/lucalewin/planer/MainActivity.java

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,26 @@
44
import android.content.Intent;
55
import android.content.SharedPreferences;
66
import android.os.Bundle;
7-
import android.view.LayoutInflater;
87
import android.view.View;
98
import android.widget.TableLayout;
10-
import android.widget.TextView;
119

1210
import com.google.android.material.card.MaterialCardView;
1311
import com.google.android.material.textview.MaterialTextView;
1412

15-
import org.w3c.dom.Text;
16-
1713
import java.time.LocalDateTime;
14+
import java.time.format.DateTimeFormatter;
1815
import java.time.format.TextStyle;
19-
import java.util.List;
2016
import java.util.Locale;
21-
import java.util.Map;
2217

2318
import de.dlyt.yanndroid.oneui.layout.ToolbarLayout;
2419
import de.dlyt.yanndroid.oneui.widget.SwipeRefreshLayout;
2520
import dev.lucalewin.planer.base.BaseThemeActivity;
2621
import dev.lucalewin.planer.iserv.IservPlan;
27-
import dev.lucalewin.planer.iserv.IservPlanRow;
2822
import dev.lucalewin.planer.iserv.web_scraping.IservWebScraper;
29-
import dev.lucalewin.planer.iserv.web_scraping.TaskRunner;
23+
import dev.lucalewin.planer.util.TaskRunner;
3024
import dev.lucalewin.planer.preferences.Preferences;
3125
import dev.lucalewin.planer.util.Tuple;
26+
import dev.lucalewin.planer.version.UpdateManager;
3227
import dev.lucalewin.planer.views.TipsCardView;
3328

3429
public class MainActivity extends BaseThemeActivity {
@@ -65,6 +60,15 @@ protected void onCreate(Bundle savedInstanceState) {
6560
return true;
6661
});
6762

63+
UpdateManager updater = UpdateManager.getInstance(this);
64+
65+
new TaskRunner().executeAsync(updater::isLatestVersionInstalled, result -> {
66+
if (!result) {
67+
toolbarLayout.getToolbarMenu().findItem(R.id.settings_menu_item).setBadge(ToolbarLayout.N_BADGE);
68+
}
69+
Preferences.getSharedPreferences(this).edit().putBoolean("latestVersionInstalled", result).apply();
70+
});
71+
6872
swipeRefreshLayout = findViewById(R.id.main_swipe_refresh_layout);
6973
swipeRefreshLayout.seslSetRefreshOnce(true);
7074
swipeRefreshLayout.setOnRefreshListener(this::loadIservData);
@@ -81,20 +85,6 @@ protected void onCreate(Bundle savedInstanceState) {
8185
tipCardClass = findViewById(R.id.tip_card_set_class);
8286
tipCardClass.setOnClickListener(view -> startActivity(new Intent().setClass(this, SettingsActivity.class)));
8387

84-
if (!isIservAccountSpecified()) {
85-
// show tip card
86-
// make user set their iserv account
87-
tipCardIservAccount.setVisibility(View.VISIBLE);
88-
return;
89-
}
90-
91-
if (!isClassSpecified()) {
92-
// show tip card
93-
// make user set their class (+ courses)
94-
tipCardClass.setVisibility(View.VISIBLE);
95-
return;
96-
}
97-
9888
loadIservData();
9989
}
10090

@@ -107,7 +97,7 @@ private boolean isIservAccountSpecified() {
10797

10898
System.out.println(baseURL + username + password);
10999

110-
return baseURL != null && username != null && password != null;
100+
return baseURL != null && username != null && password != null && !baseURL.equals("") && !username.equals("") && !password.equals("");
111101
}
112102

113103
private boolean isClassSpecified() {
@@ -116,6 +106,24 @@ private boolean isClassSpecified() {
116106
}
117107

118108
private void loadIservData() {
109+
110+
tipCardIservAccount.setVisibility(View.GONE);
111+
tipCardClass.setVisibility(View.GONE);
112+
113+
if (!isIservAccountSpecified()) {
114+
// show tip card
115+
// make user set their iserv account
116+
tipCardIservAccount.setVisibility(View.VISIBLE);
117+
return;
118+
}
119+
120+
if (!isClassSpecified()) {
121+
// show tip card
122+
// make user set their class (+ courses)
123+
tipCardClass.setVisibility(View.VISIBLE);
124+
return;
125+
}
126+
119127
runner.executeAsync(() -> {
120128
swipeRefreshLayout.setRefreshing(true);
121129
IservWebScraper.login(this);
@@ -153,15 +161,18 @@ private void loadIservData() {
153161
return;
154162
}
155163

156-
TableLayout today = PlanerTable.initTable(MainActivity.this, clazz, currentPlan);
164+
TableLayout today = currentPlan.initTable(this, clazz);
157165
currentPlanerContainer.removeAllViews();
158166
currentPlanerContainer.addView(today);
159167

160-
TableLayout tomorrow = PlanerTable.initTable(MainActivity.this, clazz, nextPlan);
168+
TableLayout tomorrow = nextPlan.initTable(this, clazz);
161169
nextPlanerContainer.removeAllViews();
162170
nextPlanerContainer.addView(tomorrow);
163171

164172
swipeRefreshLayout.setRefreshing(false);
173+
174+
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm");
175+
toolbarLayout.setSubtitle(String.format(getString(R.string.iserv_synced_at), LocalDateTime.now().format(dateTimeFormatter)));
165176
});
166177
}
167178

app/src/main/java/dev/lucalewin/planer/settings/fragments/MainSettingsFragment.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,15 @@
88
import androidx.annotation.Nullable;
99

1010
import java.util.Arrays;
11-
import java.util.Collections;
1211
import java.util.Locale;
13-
import java.util.Set;
1412

1513
import de.dlyt.yanndroid.oneui.layout.PreferenceFragment;
1614
import de.dlyt.yanndroid.oneui.preference.EditTextPreference;
1715
import de.dlyt.yanndroid.oneui.preference.ListPreference;
18-
import de.dlyt.yanndroid.oneui.preference.MultiSelectListPreference;
1916
import dev.lucalewin.planer.R;
2017
import dev.lucalewin.planer.preferences.Preferences;
2118
import dev.lucalewin.planer.preferences.language.LanguageUtil;
19+
import dev.lucalewin.planer.preferences.view.BadgePreferenceScreen;
2220

2321
public class MainSettingsFragment extends PreferenceFragment {
2422

@@ -41,11 +39,12 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
4139

4240
ListPreference languagePreference = findPreference("language_selector");
4341
EditTextPreference classPreference = findPreference("class");
42+
BadgePreferenceScreen appInfoPreference = findPreference("about_app");
4443
// MultiSelectListPreference coursesPreference = findPreference("courses");
4544

4645
assert languagePreference != null;
4746
assert classPreference != null;
48-
// assert coursesPreference != null;
47+
assert appInfoPreference != null;
4948

5049
// init languagePreference
5150
String locale = sharedPreferences.getString("language", Locale.getDefault().getLanguage());
@@ -72,6 +71,16 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
7271
return true;
7372
});
7473

74+
if (!sharedPreferences.getBoolean("latestVersionInstalled", true)) {
75+
appInfoPreference.setBadge(BadgePreferenceScreen.N_BADGE);
76+
}
77+
78+
// boolean updateAvailable = UpdateManager.getInstance(requireContext()).isLatestVersionInstalled();
79+
80+
// CheckBoxPreference checkBoxPreference = findPreference("checkbox");
81+
// assert checkBoxPreference != null;
82+
// checkBoxPreference.setWidgetLayoutResource(R.layout.badge_layout);
83+
7584
// init coursesPreference
7685
// FIXME
7786
// Set<String> courses = sharedPreferences.getStringSet("courses", Collections.emptySet());

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<com.google.android.material.card.MaterialCardView
4646
android:layout_width="match_parent"
4747
android:layout_height="wrap_content"
48+
android:minHeight="32dp"
4849
android:paddingHorizontal="24dp"
4950
android:paddingVertical="10dp"
5051
android:id="@+id/planer_current_container" />
@@ -58,6 +59,7 @@
5859
<com.google.android.material.card.MaterialCardView
5960
android:layout_width="match_parent"
6061
android:layout_height="wrap_content"
62+
android:minHeight="32dp"
6163
android:paddingHorizontal="24dp"
6264
android:paddingVertical="10dp"
6365
android:id="@+id/planer_next_container" />

0 commit comments

Comments
 (0)