Add account entity
This commit is contained in:
parent
970c14581b
commit
3119d44264
@ -38,6 +38,7 @@ import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
|
|||||||
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
|
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
|
||||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||||
import com.readrops.app.R;
|
import com.readrops.app.R;
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Feed;
|
import com.readrops.app.database.entities.Feed;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.pojo.ItemWithFeed;
|
import com.readrops.app.database.pojo.ItemWithFeed;
|
||||||
@ -88,6 +89,8 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
|
|||||||
|
|
||||||
private ActionMode actionMode;
|
private ActionMode actionMode;
|
||||||
|
|
||||||
|
private Account account;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -111,6 +114,8 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
|
|||||||
adapter.submitList(itemWithFeeds);
|
adapter.submitList(itemWithFeeds);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
viewModel.getAccounts().observe(this, accounts -> account = accounts.get(0));
|
||||||
|
|
||||||
refreshLayout = findViewById(R.id.swipe_refresh_layout);
|
refreshLayout = findViewById(R.id.swipe_refresh_layout);
|
||||||
refreshLayout.setOnRefreshListener(this);
|
refreshLayout.setOnRefreshListener(this);
|
||||||
|
|
||||||
@ -431,7 +436,7 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sync(List<Feed> feeds) {
|
private void sync(List<Feed> feeds) {
|
||||||
viewModel.sync(feeds)
|
viewModel.sync(feeds, account)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<Feed>() {
|
.subscribe(new Observer<Feed>() {
|
||||||
|
@ -2,8 +2,14 @@ package com.readrops.app.database;
|
|||||||
|
|
||||||
import androidx.room.TypeConverter;
|
import androidx.room.TypeConverter;
|
||||||
|
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
|
|
||||||
import org.joda.time.LocalDateTime;
|
import org.joda.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.readrops.app.database.entities.Account.AccountType.FEEDLY;
|
||||||
|
import static com.readrops.app.database.entities.Account.AccountType.FRESHRSS;
|
||||||
|
import static com.readrops.app.database.entities.Account.AccountType.NEXTCLOUD_NEWS;
|
||||||
|
|
||||||
public class Converters {
|
public class Converters {
|
||||||
|
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
@ -16,5 +22,22 @@ public class Converters {
|
|||||||
return localDateTime.toDateTime().getMillis();
|
return localDateTime.toDateTime().getMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
public Account.AccountType fromAccountTypeCode(int code) {
|
||||||
|
if (code == NEXTCLOUD_NEWS.getCode())
|
||||||
|
return NEXTCLOUD_NEWS;
|
||||||
|
else if (code == FEEDLY.getCode())
|
||||||
|
return FEEDLY;
|
||||||
|
else if (code == FRESHRSS.getCode())
|
||||||
|
return FRESHRSS;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
public int getAccountTypeCode(Account.AccountType accountType) {
|
||||||
|
return accountType.getCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,24 @@
|
|||||||
package com.readrops.app.database;
|
package com.readrops.app.database;
|
||||||
|
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase;
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.room.Room;
|
import androidx.room.Room;
|
||||||
import androidx.room.RoomDatabase;
|
import androidx.room.RoomDatabase;
|
||||||
import androidx.room.TypeConverters;
|
import androidx.room.TypeConverters;
|
||||||
import android.content.Context;
|
import androidx.sqlite.db.SupportSQLiteDatabase;
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
|
import com.readrops.app.database.dao.AccountDao;
|
||||||
import com.readrops.app.database.dao.FeedDao;
|
import com.readrops.app.database.dao.FeedDao;
|
||||||
import com.readrops.app.database.dao.FolderDao;
|
import com.readrops.app.database.dao.FolderDao;
|
||||||
import com.readrops.app.database.dao.ItemDao;
|
import com.readrops.app.database.dao.ItemDao;
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Feed;
|
import com.readrops.app.database.entities.Feed;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.entities.Item;
|
import com.readrops.app.database.entities.Item;
|
||||||
|
|
||||||
|
|
||||||
@androidx.room.Database(entities = {Feed.class, Item.class, Folder.class}, version = 1, exportSchema = false)
|
@androidx.room.Database(entities = {Feed.class, Item.class, Folder.class, Account.class}, version = 1, exportSchema = false)
|
||||||
@TypeConverters({Converters.class})
|
@TypeConverters({Converters.class})
|
||||||
public abstract class Database extends RoomDatabase {
|
public abstract class Database extends RoomDatabase {
|
||||||
|
|
||||||
@ -25,6 +28,8 @@ public abstract class Database extends RoomDatabase {
|
|||||||
|
|
||||||
public abstract FolderDao folderDao();
|
public abstract FolderDao folderDao();
|
||||||
|
|
||||||
|
public abstract AccountDao accountDao();
|
||||||
|
|
||||||
private static Database database;
|
private static Database database;
|
||||||
|
|
||||||
public static Database getInstance(Context context) {
|
public static Database getInstance(Context context) {
|
||||||
@ -41,6 +46,11 @@ public abstract class Database extends RoomDatabase {
|
|||||||
|
|
||||||
Folder folder = new Folder("reserved");
|
Folder folder = new Folder("reserved");
|
||||||
new Thread(() -> database.folderDao().insert(folder)).start();
|
new Thread(() -> database.folderDao().insert(folder)).start();
|
||||||
|
|
||||||
|
Account account = new Account("", "Nextcloud News",
|
||||||
|
Account.AccountType.NEXTCLOUD_NEWS);
|
||||||
|
|
||||||
|
new Thread(() -> database.accountDao().insert(account)).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.readrops.app.database.dao;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
import androidx.room.Dao;
|
||||||
|
import androidx.room.Insert;
|
||||||
|
import androidx.room.Query;
|
||||||
|
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
public interface AccountDao {
|
||||||
|
|
||||||
|
@Query("Select * from Account")
|
||||||
|
LiveData<List<Account>> selectAll();
|
||||||
|
|
||||||
|
@Query("Select * from Account Where id = :id")
|
||||||
|
Account selectById(int id);
|
||||||
|
|
||||||
|
@Insert
|
||||||
|
long insert(Account account);
|
||||||
|
|
||||||
|
@Query("Update Account set last_modified = :lastModified Where id = :accountId")
|
||||||
|
void updateLastModified(int accountId, long lastModified);
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
package com.readrops.app.database.entities;
|
||||||
|
|
||||||
|
import androidx.room.ColumnInfo;
|
||||||
|
import androidx.room.Entity;
|
||||||
|
import androidx.room.Ignore;
|
||||||
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Account {
|
||||||
|
|
||||||
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "account_name")
|
||||||
|
private String accountName;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "account_type")
|
||||||
|
private AccountType accountType;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "last_modified")
|
||||||
|
private long lastModified;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "current_account")
|
||||||
|
private boolean currentAccount;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private String login;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
public Account() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public Account(String url, String accountName, AccountType accountType) {
|
||||||
|
this.url = url;
|
||||||
|
this.accountName = accountName;
|
||||||
|
this.accountType = accountType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAccountName() {
|
||||||
|
return accountName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccountName(String accountName) {
|
||||||
|
this.accountName = accountName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AccountType getAccountType() {
|
||||||
|
return accountType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccountType(AccountType accountType) {
|
||||||
|
this.accountType = accountType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLastModified() {
|
||||||
|
return lastModified;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastModified(long lastModified) {
|
||||||
|
this.lastModified = lastModified;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCurrentAccount() {
|
||||||
|
return currentAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrentAccount(boolean currentAccount) {
|
||||||
|
this.currentAccount = currentAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLogin() {
|
||||||
|
return login;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLogin(String login) {
|
||||||
|
this.login = login;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AccountType {
|
||||||
|
NEXTCLOUD_NEWS(0),
|
||||||
|
FEEDLY(1),
|
||||||
|
FRESHRSS(2);
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
AccountType(int code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ import android.util.Patterns;
|
|||||||
import androidx.palette.graphics.Palette;
|
import androidx.palette.graphics.Palette;
|
||||||
|
|
||||||
import com.readrops.app.database.Database;
|
import com.readrops.app.database.Database;
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Feed;
|
import com.readrops.app.database.entities.Feed;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.pojo.FeedWithFolder;
|
import com.readrops.app.database.pojo.FeedWithFolder;
|
||||||
@ -35,7 +36,7 @@ public abstract class ARepository {
|
|||||||
this.database = Database.getInstance(application);
|
this.database = Database.getInstance(application);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Observable<Feed> sync(List<Feed> feeds);
|
public abstract Observable<Feed> sync(List<Feed> feeds, Account account);
|
||||||
|
|
||||||
public abstract Single<List<FeedInsertionResult>> addFeeds(List<ParsingResult> results);
|
public abstract Single<List<FeedInsertionResult>> addFeeds(List<ParsingResult> results);
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||||||
import androidx.paging.PageKeyedDataSource;
|
import androidx.paging.PageKeyedDataSource;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.pojo.FeedWithFolder;
|
import com.readrops.app.database.pojo.FeedWithFolder;
|
||||||
import com.readrops.app.database.pojo.ItemWithFeed;
|
import com.readrops.app.database.pojo.ItemWithFeed;
|
||||||
@ -49,7 +50,7 @@ public class LocalFeedRepository extends ARepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Observable<Feed> sync(@Nullable List<Feed> feeds) {
|
public Observable<Feed> sync(@Nullable List<Feed> feeds, Account account) {
|
||||||
return Observable.create(emitter -> {
|
return Observable.create(emitter -> {
|
||||||
List<Feed> feedList;
|
List<Feed> feedList;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package com.readrops.app.repositories;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.util.TimingLogger;
|
import android.util.TimingLogger;
|
||||||
|
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Feed;
|
import com.readrops.app.database.entities.Feed;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.entities.Item;
|
import com.readrops.app.database.entities.Item;
|
||||||
@ -21,6 +22,8 @@ import com.readrops.readropslibrary.services.nextcloudnews.json.NextNewsFolder;
|
|||||||
import com.readrops.readropslibrary.services.nextcloudnews.json.NextNewsItem;
|
import com.readrops.readropslibrary.services.nextcloudnews.json.NextNewsItem;
|
||||||
import com.readrops.readropslibrary.utils.LibUtils;
|
import com.readrops.readropslibrary.utils.LibUtils;
|
||||||
|
|
||||||
|
import org.joda.time.LocalDateTime;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -40,13 +43,23 @@ public class NextNewsRepository extends ARepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Observable<Feed> sync(List<Feed> feeds) {
|
public Observable<Feed> sync(List<Feed> feeds, Account account) {
|
||||||
return Observable.create(emitter -> {
|
return Observable.create(emitter -> {
|
||||||
try {
|
try {
|
||||||
NextNewsAPI newsAPI = new NextNewsAPI();
|
NextNewsAPI newsAPI = new NextNewsAPI();
|
||||||
|
long lastModified = LocalDateTime.now().toDateTime().getMillis();
|
||||||
|
NextNewsAPI.SyncType syncType;
|
||||||
|
|
||||||
Credentials credentials = new Credentials("", LibUtils.NEXTCLOUD_PASSWORD, "");
|
if (account.getLastModified() != 0)
|
||||||
SyncResult syncResult = newsAPI.sync(credentials, NextNewsAPI.SyncType.INITIAL_SYNC, new SyncData());
|
syncType = NextNewsAPI.SyncType.CLASSIC_SYNC;
|
||||||
|
else
|
||||||
|
syncType = NextNewsAPI.SyncType.INITIAL_SYNC;
|
||||||
|
|
||||||
|
SyncData syncData = new SyncData();
|
||||||
|
syncData.setLastModified(account.getLastModified() / 1000L);
|
||||||
|
|
||||||
|
Credentials credentials = new Credentials("Lucas", LibUtils.NEXTCLOUD_PASSWORD, account.getUrl());
|
||||||
|
SyncResult syncResult = newsAPI.sync(credentials, syncType, syncData);
|
||||||
|
|
||||||
if (!syncResult.isError()) {
|
if (!syncResult.isError()) {
|
||||||
TimingLogger timings = new TimingLogger(TAG, "sync");
|
TimingLogger timings = new TimingLogger(TAG, "sync");
|
||||||
@ -56,10 +69,12 @@ public class NextNewsRepository extends ARepository {
|
|||||||
insertFeeds(syncResult.getFeeds());
|
insertFeeds(syncResult.getFeeds());
|
||||||
timings.addSplit("insert feeds");
|
timings.addSplit("insert feeds");
|
||||||
|
|
||||||
insertItems(syncResult.getItems());
|
insertItems(syncResult.getItems(), syncType == NextNewsAPI.SyncType.INITIAL_SYNC);
|
||||||
timings.addSplit("insert items");
|
timings.addSplit("insert items");
|
||||||
timings.dumpToLog();
|
timings.dumpToLog();
|
||||||
|
|
||||||
|
database.accountDao().updateLastModified(account.getId(), lastModified);
|
||||||
|
|
||||||
emitter.onComplete();
|
emitter.onComplete();
|
||||||
} else
|
} else
|
||||||
emitter.onError(new Throwable());
|
emitter.onError(new Throwable());
|
||||||
@ -142,22 +157,25 @@ public class NextNewsRepository extends ARepository {
|
|||||||
database.folderDao().insert(newFolders);
|
database.folderDao().insert(newFolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertItems(List<NextNewsItem> items) {
|
private void insertItems(List<NextNewsItem> items, boolean initialSync) {
|
||||||
List<Item> newItems = new ArrayList<>();
|
List<Item> newItems = new ArrayList<>();
|
||||||
|
|
||||||
for (NextNewsItem nextNewsItem : items) {
|
for (NextNewsItem nextNewsItem : items) {
|
||||||
|
|
||||||
if (!database.itemDao().remoteItemExists(nextNewsItem.getId())) {
|
if (!initialSync) {
|
||||||
try {
|
if (database.itemDao().remoteItemExists(nextNewsItem.getId()))
|
||||||
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId());
|
continue; // skip the current item if it exists in the db
|
||||||
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
}
|
||||||
|
|
||||||
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
try {
|
||||||
|
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId());
|
||||||
|
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
||||||
|
|
||||||
newItems.add(item);
|
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
newItems.add(item);
|
||||||
}
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,18 @@
|
|||||||
package com.readrops.app.viewmodels;
|
package com.readrops.app.viewmodels;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import androidx.arch.core.util.Function;
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.AndroidViewModel;
|
import androidx.lifecycle.AndroidViewModel;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MediatorLiveData;
|
import androidx.lifecycle.MediatorLiveData;
|
||||||
import androidx.lifecycle.Observer;
|
|
||||||
import androidx.lifecycle.Transformations;
|
|
||||||
import androidx.paging.DataSource;
|
|
||||||
import androidx.paging.LivePagedListBuilder;
|
import androidx.paging.LivePagedListBuilder;
|
||||||
import androidx.paging.PagedList;
|
import androidx.paging.PagedList;
|
||||||
import androidx.sqlite.db.SupportSQLiteQuery;
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.readrops.app.activities.MainActivity;
|
import com.readrops.app.activities.MainActivity;
|
||||||
import com.readrops.app.database.Database;
|
import com.readrops.app.database.Database;
|
||||||
import com.readrops.app.database.ItemsListQueryBuilder;
|
import com.readrops.app.database.ItemsListQueryBuilder;
|
||||||
|
import com.readrops.app.database.entities.Account;
|
||||||
import com.readrops.app.database.entities.Feed;
|
import com.readrops.app.database.entities.Feed;
|
||||||
import com.readrops.app.database.entities.Folder;
|
import com.readrops.app.database.entities.Folder;
|
||||||
import com.readrops.app.database.pojo.ItemWithFeed;
|
import com.readrops.app.database.pojo.ItemWithFeed;
|
||||||
@ -106,8 +102,8 @@ public class MainViewModel extends AndroidViewModel {
|
|||||||
return itemsWithFeed;
|
return itemsWithFeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Observable<Feed> sync(List<Feed> feeds) {
|
public Observable<Feed> sync(List<Feed> feeds, Account account) {
|
||||||
return repository.sync(feeds);
|
return repository.sync(feeds, account);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Single<Integer> getFeedCount() {
|
public Single<Integer> getFeedCount() {
|
||||||
@ -134,6 +130,10 @@ public class MainViewModel extends AndroidViewModel {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LiveData<List<Account>> getAccounts() {
|
||||||
|
return db.accountDao().selectAll();
|
||||||
|
}
|
||||||
|
|
||||||
public Completable setItemReadState(int itemId, boolean read) {
|
public Completable setItemReadState(int itemId, boolean read) {
|
||||||
return Completable.create(emitter -> {
|
return Completable.create(emitter -> {
|
||||||
db.itemDao().setReadState(itemId, read ? 1 : 0);
|
db.itemDao().setReadState(itemId, read ? 1 : 0);
|
||||||
|
@ -104,10 +104,10 @@ public class NextNewsAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void putModifiedItems(SyncData data, SyncResult syncResult) throws IOException {
|
private void putModifiedItems(SyncData data, SyncResult syncResult) throws IOException {
|
||||||
Response readItemsResponse = api.setArticlesState(StateType.READ.name(),
|
Response readItemsResponse = api.setArticlesState(StateType.READ.name().toLowerCase(),
|
||||||
data.getReadItems()).execute();
|
data.getReadItems()).execute();
|
||||||
|
|
||||||
Response unreadItemsResponse = api.setArticlesState(StateType.UNREAD.toString(),
|
Response unreadItemsResponse = api.setArticlesState(StateType.UNREAD.toString().toLowerCase(),
|
||||||
data.getUnreadItems()).execute();
|
data.getUnreadItems()).execute();
|
||||||
|
|
||||||
if (!readItemsResponse.isSuccessful())
|
if (!readItemsResponse.isSuccessful())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user