Adding ability to query last repo update and number of repos.
This will be used to improve the empty state handling of the main list of latest apps.
This commit is contained in:
parent
d83c15d0d4
commit
510ec5f7c7
@ -16,6 +16,7 @@ import org.fdroid.fdroid.data.Schema.RepoTable;
|
||||
import org.fdroid.fdroid.data.Schema.RepoTable.Cols;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class RepoProvider extends FDroidProvider {
|
||||
@ -251,6 +252,40 @@ public class RepoProvider extends FDroidProvider {
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Date lastUpdate(Context context) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
final String[] projection = {Cols.LAST_UPDATED};
|
||||
final String selection = Cols.IN_USE + " = 1";
|
||||
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, Cols.LAST_UPDATED + " DESC");
|
||||
|
||||
Date lastUpdate = null;
|
||||
if (cursor != null) {
|
||||
if (cursor.getCount() > 0) {
|
||||
cursor.moveToFirst();
|
||||
lastUpdate = Utils.parseDate(cursor.getString(0), null);
|
||||
}
|
||||
cursor.close();
|
||||
}
|
||||
|
||||
return lastUpdate;
|
||||
}
|
||||
|
||||
public static int countEnabledRepos(Context context) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
final String[] projection = {Cols._ID};
|
||||
final String selection = Cols.IN_USE + " = 1";
|
||||
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, null);
|
||||
|
||||
int count = 0;
|
||||
if (cursor != null) {
|
||||
count = cursor.getCount();
|
||||
cursor.close();
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
private static final String PROVIDER_NAME = "RepoProvider";
|
||||
|
@ -36,6 +36,7 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@ -48,6 +49,58 @@ public class RepoProviderTest extends FDroidProviderTest {
|
||||
|
||||
private static final String[] COLS = RepoTable.Cols.ALL;
|
||||
|
||||
@Test
|
||||
public void countEnabledRepos() {
|
||||
|
||||
// By default, f-droid is enabled.
|
||||
assertEquals(1, RepoProvider.Helper.countEnabledRepos(context));
|
||||
|
||||
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
|
||||
gpRepo = setEnabled(gpRepo, true);
|
||||
assertEquals(2, RepoProvider.Helper.countEnabledRepos(context));
|
||||
|
||||
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
|
||||
setEnabled(fdroidRepo, false);
|
||||
setEnabled(gpRepo, false);
|
||||
|
||||
assertEquals(0, RepoProvider.Helper.countEnabledRepos(context));
|
||||
}
|
||||
|
||||
private Repo setEnabled(Repo repo, boolean enabled) {
|
||||
ContentValues enable = new ContentValues(1);
|
||||
enable.put(RepoTable.Cols.IN_USE, enabled);
|
||||
RepoProvider.Helper.update(context, repo, enable);
|
||||
return RepoProvider.Helper.findByAddress(context, repo.address);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lastUpdated() {
|
||||
assertNull(RepoProvider.Helper.lastUpdate(context));
|
||||
|
||||
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
|
||||
|
||||
// Set date to 2017-04-05 11:56:38
|
||||
setLastUpdate(gpRepo, new Date(1491357408643L));
|
||||
|
||||
// GP is not yet enabled, so it is not counted.
|
||||
assertNull(RepoProvider.Helper.lastUpdate(context));
|
||||
|
||||
// Set date to 2017-04-04 11:56:38
|
||||
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
|
||||
setLastUpdate(fdroidRepo, new Date(1491357408643L - (1000 * 60 * 60 * 24)));
|
||||
assertEquals("2017-04-04", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
|
||||
|
||||
setEnabled(gpRepo, true);
|
||||
assertEquals("2017-04-05", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
|
||||
}
|
||||
|
||||
private Repo setLastUpdate(Repo repo, Date date) {
|
||||
ContentValues values = new ContentValues(1);
|
||||
values.put(RepoTable.Cols.LAST_UPDATED, Utils.formatDate(date, null));
|
||||
RepoProvider.Helper.update(context, repo, values);
|
||||
return RepoProvider.Helper.findByAddress(context, repo.address);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findByUrl() {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user