Skip to content

Commit f58fe58

Browse files
authored
релиз 2.0.10 (#7)
1 parent fb5d0c3 commit f58fe58

File tree

5 files changed

+115
-80
lines changed

5 files changed

+115
-80
lines changed

app/build.gradle

+5-5
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ android {
2121
applicationId "ru.plumsoftware.notebook"
2222
minSdk 22
2323
targetSdk 35
24-
versionCode 31
25-
versionName "2.0.8"
24+
versionCode 33
25+
versionName "2.0.10"
2626

2727
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2828

@@ -55,13 +55,13 @@ dependencies {
5555
//Autogenerate
5656
implementation 'androidx.appcompat:appcompat:1.7.0'
5757
implementation 'com.google.android.material:material:1.12.0'
58-
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
58+
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
5959
testImplementation 'junit:junit:4.13.2'
6060
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
6161
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
6262

6363
//Yandex ads
64-
implementation 'com.yandex.android:mobileads:7.9.0'
64+
implementation 'com.yandex.android:mobileads:7.11.0'
6565

6666
//Glide
6767
implementation 'com.github.bumptech.glide:glide:4.15.1'
@@ -70,7 +70,7 @@ dependencies {
7070
implementation 'com.google.firebase:firebase-messaging:24.1.0'
7171

7272
//Analytics
73-
implementation 'com.google.firebase:firebase-analytics:22.2.0'
73+
implementation 'com.google.firebase:firebase-analytics:22.3.0'
7474

7575
//Modules
7676
implementation project(':app-domain')

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/main/presenter/MainPresenterImpl.java

+65-39
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,15 @@ public class MainPresenterImpl implements MainPresenter {
5353
private List<Note> notes;
5454
private final List<Note> filteredNotes;
5555

56+
private ProgressDialog progressDialog;
57+
5658
public MainPresenterImpl(Context context, @NonNull Activity activity, MainView mainView) {
5759
this.context = context;
5860
this.activity = activity;
5961
this.mainView = mainView;
6062
filteredNotes = new ArrayList<>();
6163
notes = new ArrayList<>();
64+
progressDialog = new ProgressDialog(activity, R.style.CustomProgressDialog);
6265
}
6366

6467
@Override
@@ -87,93 +90,116 @@ public void initMobileSdk() {
8790
});
8891
}
8992

93+
private void showProgressDialog() {
94+
progressDialog.showDialog();
95+
}
96+
97+
private void dismissProgressDialog() {
98+
progressDialog.dismiss();
99+
}
100+
90101

91102
@Override
92103
public void initNotes(Conditions conditions) {
93-
mainView.showProgressDialog();
94-
if (conditions instanceof Conditions.Search) {
95-
filteredNotes.clear();
96-
String query = ((Conditions.Search) conditions).getQuery();
97-
98-
for (Note note : notes) {
99-
if (note.getNoteName().contains(query) ||
100-
note.getNoteText().contains(query) ||
101-
new SimpleDateFormat("dd.MM.yyyy HH.mm", Locale.getDefault()).format(new Date(note.getAddNoteTime())).contains(query)
102-
) {
103-
filteredNotes.add(note);
104+
new Thread(() -> {
105+
if (conditions instanceof Conditions.Search) {
106+
filteredNotes.clear();
107+
String query = ((Conditions.Search) conditions).getQuery();
108+
109+
for (Note note : notes) {
110+
if (note.getNoteName().contains(query) ||
111+
note.getNoteText().contains(query) ||
112+
new SimpleDateFormat("dd.MM.yyyy HH.mm", Locale.getDefault()).format(new Date(note.getAddNoteTime())).contains(query)
113+
) {
114+
filteredNotes.add(note);
115+
}
116+
}
117+
RecyclerView.LayoutManager layoutManager;
118+
if (isList) {
119+
layoutManager = new LinearLayoutManager(context);
120+
} else {
121+
layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
104122
}
123+
124+
mainView.initRecyclerView(filteredNotes, layoutManager);
105125
}
106-
RecyclerView.LayoutManager layoutManager;
107-
if (isList) {
108-
layoutManager = new LinearLayoutManager(context);
109-
} else {
110-
layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
126+
else if (conditions instanceof Conditions.All) {
127+
notes.clear();
128+
SQLiteDatabaseManager sqLiteDatabaseManager = new SQLiteDatabaseManager(context);
129+
sqLiteDatabaseNotes = sqLiteDatabaseManager.getWritableDatabase();
130+
notes = loadNotes();
131+
132+
isList = true;
133+
134+
activity.runOnUiThread(() -> {
135+
mainView.changeFilterButtonImage(R.drawable.ic_baseline_filter_list);
136+
mainView.initRecyclerView(notes, new LinearLayoutManager(context));
137+
});
111138
}
112-
113-
mainView.initRecyclerView(filteredNotes, layoutManager);
114-
} else if (conditions instanceof Conditions.All) {
115-
notes.clear();
116-
SQLiteDatabaseManager sqLiteDatabaseManager = new SQLiteDatabaseManager(context);
117-
sqLiteDatabaseNotes = sqLiteDatabaseManager.getWritableDatabase();
118-
notes = loadNotes();
119-
120-
isList = true;
121-
mainView.changeFilterButtonImage(R.drawable.ic_baseline_filter_list);
122-
mainView.initRecyclerView(notes, new LinearLayoutManager(context));
123-
}
124-
mainView.dismissProgressDialog();
139+
}).start();
125140
}
126141

127142
@Override
128143
public void initOpenAds() {
129-
mainView.showProgressDialog();
144+
activity.runOnUiThread(this::showProgressDialog);
130145
final AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(context);
131146
final AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(AdsIds.OPEN_AD_UNIT_ID).build();
132147

133148
AppOpenAdEventListener appOpenAdEventListener = new AppOpenAdEventListener() {
134149
@Override
135150
public void onAdShown() {
136-
mainView.dismissProgressDialog();
151+
activity.runOnUiThread(() -> dismissProgressDialog());
137152
}
138153

139154
@Override
140155
public void onAdFailedToShow(@NonNull final AdError adError) {
141-
mainView.dismissProgressDialog();
156+
activity.runOnUiThread(() -> dismissProgressDialog());
142157
}
143158

144159
@Override
145160
public void onAdDismissed() {
146161
clearAppOpenAd();
162+
activity.runOnUiThread(() -> dismissProgressDialog());
147163
}
148164

149165
@Override
150166
public void onAdClicked() {
151-
// Called when a click is recorded for an ad.
167+
activity.runOnUiThread(() -> dismissProgressDialog());
152168
}
153169

154170
@Override
155171
public void onAdImpression(@Nullable final ImpressionData impressionData) {
156-
// Called when an impression is recorded for an ad.
172+
activity.runOnUiThread(() -> dismissProgressDialog());
157173
}
158174
};
159175
AppOpenAdLoadListener appOpenAdLoadListener = new AppOpenAdLoadListener() {
160176
@Override
161177
public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) {
178+
dismissProgressDialog();
162179
mainAppOpenAd = appOpenAd;
163-
appOpenAd.setAdEventListener(appOpenAdEventListener);
164-
mainView.dismissProgressDialog();
165-
mainAppOpenAd.show(activity);
180+
activity.runOnUiThread(() -> {
181+
mainAppOpenAd.setAdEventListener(appOpenAdEventListener);
182+
mainAppOpenAd.show(activity);
183+
});
166184
}
167185

168186
@Override
169187
public void onAdFailedToLoad(@NonNull final AdRequestError adRequestError) {
170-
mainView.dismissProgressDialog();
188+
activity.runOnUiThread(() -> dismissProgressDialog());
171189
}
172190
};
173191

174192
appOpenAdLoader.setAdLoadListener(appOpenAdLoadListener);
175193
appOpenAdLoader.loadAd(adRequestConfiguration);
176-
mainView.dismissProgressDialog();
194+
195+
new Thread(() -> {
196+
try {
197+
Thread.sleep(2000);
198+
} catch (InterruptedException e) {
199+
throw new RuntimeException(e);
200+
}
201+
activity.runOnUiThread(this::dismissProgressDialog);
202+
});
177203
}
178204

179205
@NonNull

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/main/view/MainActivity.java

+7-25
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import ru.plumsoftware.notebook.presentation.activities.main.presenter.MainPresenterImpl;
2020
import ru.plumsoftware.notebook.presentation.adapters.NoteAdapter;
2121
import ru.plumsoftware.notebook.presentation.activities.main.presenter.MainPresenter;
22-
import ru.plumsoftware.notebook.presentation.dialogs.ProgressDialog;
2322

2423
public class MainActivity extends AppCompatActivity implements MainView {
2524

@@ -31,8 +30,6 @@ public class MainActivity extends AppCompatActivity implements MainView {
3130
private ImageView filterAsList;
3231
private RecyclerView recyclerViewNotes;
3332

34-
private ProgressDialog progressDialog;
35-
3633
@Override
3734
protected void onCreate(Bundle savedInstanceState) {
3835
super.onCreate(savedInstanceState);
@@ -49,10 +46,6 @@ protected void onCreate(Bundle savedInstanceState) {
4946
filterAsList = findViewById(R.id.filterAsList);
5047
recyclerViewNotes = activity.findViewById(R.id.recyclerViewNotes);
5148
ImageButton addNote = findViewById(R.id.addNote);
52-
progressDialog = new ProgressDialog(context, R.style.CustomProgressDialog);
53-
54-
// load ad
55-
presenter.initOpenAds();
5649

5750
// Clickers
5851
filterAsList.setOnClickListener(view -> presenter.changeListStyle());
@@ -72,6 +65,13 @@ public boolean onQueryTextChange(String s) {
7265
return false;
7366
}
7467
});
68+
69+
// load ad
70+
presenter.initMobileSdk();
71+
presenter.initOpenAds();
72+
73+
// Load notes
74+
presenter.initNotes(new Conditions.All());
7575
}
7676

7777
@Override
@@ -94,22 +94,4 @@ public void initRecyclerView(List<Note> notes, RecyclerView.LayoutManager layout
9494
recyclerViewNotes.setAdapter(noteAdapter);
9595
recyclerViewNotes.setVisibility(View.VISIBLE);
9696
}
97-
98-
@Override
99-
public void showProgressDialog() {
100-
progressDialog.showDialog();
101-
}
102-
103-
@Override
104-
public void dismissProgressDialog() {
105-
progressDialog.dismiss();
106-
}
107-
108-
@Override
109-
protected void onResume() {
110-
super.onResume();
111-
112-
presenter.initNotes(new Conditions.All());
113-
presenter.initMobileSdk();
114-
}
11597
}

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/main/view/MainView.java

-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,4 @@
1010
public interface MainView {
1111
void changeFilterButtonImage(@DrawableRes int res);
1212
void initRecyclerView(List<Note> notes, RecyclerView.LayoutManager layoutManager);
13-
14-
void showProgressDialog();
15-
void dismissProgressDialog();
1613
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package ru.plumsoftware.notebook.presentation.dialogs;
22

33
import android.annotation.SuppressLint;
4+
import android.app.Activity;
45
import android.app.Dialog;
56
import android.content.Context;
7+
import android.os.Handler;
8+
import android.os.Looper;
69
import android.view.LayoutInflater;
710
import android.view.View;
811
import android.view.Window;
@@ -13,6 +16,7 @@ public class ProgressDialog {
1316
private Dialog dialog;
1417
private Context context;
1518
private int theme;
19+
private final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
1620

1721
public ProgressDialog(Context context) {
1822
this.context = context;
@@ -24,20 +28,46 @@ public ProgressDialog(Context context, int theme) {
2428
}
2529

2630
public void showDialog() {
27-
try {
28-
@SuppressLint("InflateParams") View view = LayoutInflater.from(context).inflate(R.layout.progress_dialog, null, false);
31+
if (context instanceof Activity) {
32+
Activity activity = (Activity) context;
33+
if (activity.isFinishing() || activity.isDestroyed()) {
34+
35+
return;
36+
}
37+
}
38+
39+
mainThreadHandler.post(() -> {
40+
@SuppressLint("InflateParams") View view = LayoutInflater.from(context).inflate(R.layout.progress_dialog,null, true);
2941
dialog = new Dialog(context, theme);
3042
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
3143
dialog.setCancelable(false);
3244
dialog.setContentView(view);
33-
dialog.show();
34-
} catch (Exception e) {
35-
e.printStackTrace();
36-
}
45+
try {
46+
dialog.show();
47+
} catch (Exception e) {
48+
e.printStackTrace();
49+
}
50+
});
3751
}
3852

3953
public void dismiss() {
40-
if (dialog != null)
41-
dialog.dismiss();
54+
if (context instanceof Activity) {
55+
Activity activity = (Activity) context;
56+
if (activity.isFinishing() || activity.isDestroyed()) {
57+
return;
58+
}
59+
}
60+
61+
mainThreadHandler.post(() -> {
62+
if (dialog != null && dialog.isShowing()) {
63+
try {
64+
dialog.dismiss();
65+
} catch (final IllegalArgumentException e) {
66+
e.printStackTrace();
67+
} catch (final Exception e) {
68+
e.printStackTrace();
69+
}
70+
}
71+
});
4272
}
4373
}

0 commit comments

Comments
 (0)