Skip to content

Commit 6e51bdd

Browse files
committed
Merge pull request #1670 from wordpress-mobile/issue/1668-reader-doesnt-auto-update
Issue/1668 reader doesnt auto update
2 parents 3c4db22 + 62e5eac commit 6e51bdd

File tree

2 files changed

+42
-51
lines changed

2 files changed

+42
-51
lines changed

WordPress/src/main/java/org/wordpress/android/datasets/ReaderTagTable.java

Lines changed: 34 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.wordpress.android.datasets;
22

3-
import android.content.ContentValues;
43
import android.database.Cursor;
54
import android.database.SQLException;
65
import android.database.sqlite.SQLiteDatabase;
@@ -237,82 +236,66 @@ public static void deleteTag(ReaderTag tag) {
237236
ReaderDatabase.getWritableDb().delete("tbl_tag_updates", "tag_name=? AND tag_type=?", args);
238237
}
239238

239+
240240
/**
241241
* tbl_tag_updates routines
242242
**/
243243
public static String getTagNewestDate(ReaderTag tag) {
244-
if (tag == null) {
245-
return "";
246-
}
247-
String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())};
248-
return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(),
249-
"SELECT date_newest FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?",
250-
args);
244+
return getDateColumn(tag, "date_newest");
251245
}
252246
public static void setTagNewestDate(ReaderTag tag, String date) {
253-
if (tag == null) {
254-
return;
255-
}
256-
257-
ContentValues values = new ContentValues();
258-
values.put("tag_name", tag.getTagName());
259-
values.put("tag_type", tag.tagType.toInt());
260-
values.put("date_newest", date);
261-
try {
262-
ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE);
263-
} catch (SQLException e) {
264-
AppLog.e(T.READER, e);
265-
}
247+
setDateColumn(tag, "date_newest", date);
266248
}
267249

268250
public static String getTagOldestDate(ReaderTag tag) {
269-
if (tag == null) {
270-
return "";
271-
}
272-
String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())};
273-
return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(),
274-
"SELECT date_oldest FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?",
275-
args);
251+
return getDateColumn(tag, "date_oldest");
276252
}
277253
public static void setTagOldestDate(ReaderTag tag, String date) {
278-
if (tag == null) {
279-
return;
280-
}
281-
282-
ContentValues values = new ContentValues();
283-
values.put("tag_name", tag.getTagName());
284-
values.put("tag_type", tag.tagType.toInt());
285-
values.put("date_oldest", date);
286-
try {
287-
ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE);
288-
} catch (SQLException e) {
289-
AppLog.e(T.READER, e);
290-
}
254+
setDateColumn(tag, "date_oldest", date);
291255
}
292256

293257
private static String getTagLastUpdated(ReaderTag tag) {
258+
return getDateColumn(tag, "date_updated");
259+
}
260+
public static void setTagLastUpdated(ReaderTag tag, String date) {
261+
setDateColumn(tag, "date_updated", date);
262+
}
263+
264+
private static String getDateColumn(ReaderTag tag, String colName) {
294265
if (tag == null) {
295266
return "";
296267
}
297268
String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())};
298269
return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(),
299-
"SELECT date_updated FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?",
270+
"SELECT " + colName + " FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?",
300271
args);
301272
}
302-
303-
public static void setTagLastUpdated(ReaderTag tag, String date) {
273+
private static void setDateColumn(ReaderTag tag, String colName, String date) {
304274
if (tag == null) {
305275
return;
306276
}
307277

308-
ContentValues values = new ContentValues();
309-
values.put("tag_name", tag.getTagName());
310-
values.put("tag_type", tag.tagType.toInt());
311-
values.put("date_updated", date);
278+
String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())};
279+
boolean rowExists = SqlUtils.boolForQuery(
280+
ReaderDatabase.getReadableDb(),
281+
"SELECT 1 FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?",
282+
args);
283+
284+
final String sql;
285+
if (rowExists) {
286+
sql = "UPDATE tbl_tag_updates SET " + colName + "=?1 WHERE tag_name=?2 AND tag_type=?3";
287+
} else {
288+
sql = "INSERT INTO tbl_tag_updates (" + colName + ", tag_name, tag_type) VALUES (?1,?2,?3)";
289+
}
290+
291+
SQLiteStatement stmt = ReaderDatabase.getWritableDb().compileStatement(sql);
312292
try {
313-
ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE);
314-
} catch (SQLException e) {
315-
AppLog.e(T.READER, e);
293+
stmt.bindString(1, date);
294+
stmt.bindString(2, tag.getTagName());
295+
stmt.bindLong (3, tag.tagType.toInt());
296+
stmt.execute();
297+
} finally {
298+
SqlUtils.closeStatement(stmt);
316299
}
317300
}
318301

WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,14 @@ public void onResume() {
214214
refreshPosts();
215215
// likewise for tags
216216
refreshTags();
217+
218+
// auto-update the current tag if it's time
219+
if (!isUpdating()
220+
&& getPostListType() == ReaderPostListType.TAG_FOLLOWED
221+
&& ReaderTagTable.shouldAutoUpdateTag(mCurrentTag)) {
222+
AppLog.i(T.READER, "reader post list > auto-updating current tag after resume");
223+
updatePostsWithTag(getCurrentTag(), RequestDataAction.LOAD_NEWER, ReaderTypes.RefreshType.AUTOMATIC);
224+
}
217225
}
218226
}
219227

0 commit comments

Comments
 (0)