Get added feeds from add feed activity result to start syncing them when going back to the main activity
This commit is contained in:
parent
0869631d95
commit
710eb18dc0
@ -1,6 +1,7 @@
|
||||
package com.readrops.app.activities;
|
||||
|
||||
import android.arch.lifecycle.ViewModelProviders;
|
||||
import android.content.Intent;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
@ -40,6 +41,8 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
|
||||
private ItemAdapter<ParsingResult> itemAdapter;
|
||||
private AddFeedsViewModel viewModel;
|
||||
|
||||
private ArrayList<Feed> feedsToUpdate;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -76,6 +79,8 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
DividerItemDecoration decoration = new DividerItemDecoration(this, ((LinearLayoutManager) layoutManager).getOrientation());
|
||||
recyclerView.addItemDecoration(decoration);
|
||||
|
||||
feedsToUpdate = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -124,7 +129,7 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<Feed> feeds) {
|
||||
|
||||
feedsToUpdate.addAll(feeds);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -173,6 +178,7 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
exit();
|
||||
finish();
|
||||
super.onBackPressed();
|
||||
}
|
||||
@ -181,10 +187,20 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
exit();
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void exit() {
|
||||
if (feedsToUpdate.size() > 0) {
|
||||
Intent intent = new Intent();
|
||||
intent.putParcelableArrayListExtra("feedIds", feedsToUpdate);
|
||||
|
||||
setResult(RESULT_OK, intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
@ -26,6 +27,7 @@ import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader;
|
||||
import com.bumptech.glide.util.ViewPreloadSizeProvider;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.readrops.app.database.entities.Feed;
|
||||
import com.readrops.app.views.AddFeedDialog;
|
||||
import com.readrops.app.views.MainItemListAdapter;
|
||||
import com.readrops.app.viewmodels.MainViewModel;
|
||||
@ -50,6 +52,7 @@ import io.reactivex.schedulers.Schedulers;
|
||||
public class MainActivity extends AppCompatActivity implements SimpleCallback, SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
public static final String TAG = MainActivity.class.getSimpleName();
|
||||
public static final int ADD_FEED_REQUEST = 1;
|
||||
|
||||
private RecyclerView recyclerView;
|
||||
private MainItemListAdapter adapter;
|
||||
@ -199,10 +202,6 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
});
|
||||
}
|
||||
|
||||
private void updateList() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
refreshLayout.setRefreshing(false);
|
||||
@ -219,7 +218,45 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
public void onRefresh() {
|
||||
Log.d(TAG, "syncing started");
|
||||
|
||||
viewModel.sync()
|
||||
sync(null);
|
||||
}
|
||||
|
||||
public void displayAddFeedDialog(View view) {
|
||||
actionMenu.close(true);
|
||||
//Dialog dialog = new AddFeedDialog(this, R.layout.add_feed_layout);
|
||||
//dialog.show();
|
||||
Intent intent = new Intent(this, AddFeedActivity.class);
|
||||
startActivityForResult(intent, ADD_FEED_REQUEST);
|
||||
}
|
||||
|
||||
public void addFolder(View view) {
|
||||
actionMenu.close(true);
|
||||
Intent intent = new Intent(this, ManageFeedsActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void insertNewFeed(ParsingResult result) {
|
||||
refreshLayout.setRefreshing(true);
|
||||
viewModel.addFeed(result);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
if (requestCode == ADD_FEED_REQUEST && resultCode == RESULT_OK) {
|
||||
ArrayList<Feed> feeds = data.getParcelableArrayListExtra("feedIds");
|
||||
|
||||
if (feeds != null && feeds.size() > 0) {
|
||||
refreshLayout.setRefreshing(true);
|
||||
sync(feeds);
|
||||
}
|
||||
}
|
||||
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
private void sync(List<Feed> feeds) {
|
||||
viewModel.sync(feeds)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new DisposableCompletableObserver() {
|
||||
@ -236,24 +273,4 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void displayAddFeedDialog(View view) {
|
||||
actionMenu.close(true);
|
||||
//Dialog dialog = new AddFeedDialog(this, R.layout.add_feed_layout);
|
||||
//dialog.show();
|
||||
Intent intent = new Intent(this, AddFeedActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void addFolder(View view) {
|
||||
actionMenu.close(true);
|
||||
Intent intent = new Intent(this, ManageFeedsActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void insertNewFeed(ParsingResult result) {
|
||||
refreshLayout.setRefreshing(true);
|
||||
viewModel.addFeed(result);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,9 @@ public interface FeedDao {
|
||||
@Query("Delete From Feed Where id = :feedId")
|
||||
void delete(int feedId);
|
||||
|
||||
@Query("Select case When :feedUrl In (Select url from Feed) Then 'true' else 'false' end")
|
||||
String feedExists(String feedUrl);
|
||||
|
||||
@Query("Select count(*) from Feed")
|
||||
int getFeedCount();
|
||||
|
||||
|
@ -118,7 +118,9 @@ public class LocalFeedRepository extends ARepository implements QueryCallback {
|
||||
|
||||
RSSQueryResult queryResult = rssNet.queryUrl(result.getUrl(), new HashMap<>());
|
||||
if (queryResult != null && queryResult.getException() == null) {
|
||||
insertedFeeds.add(insertFeed(queryResult.getFeed(), queryResult.getRssType()));
|
||||
Feed feed = insertFeed(queryResult.getFeed(), queryResult.getRssType());
|
||||
if (feed != null)
|
||||
insertedFeeds.add(feed);
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,9 +222,16 @@ public class LocalFeedRepository extends ARepository implements QueryCallback {
|
||||
break;
|
||||
}
|
||||
|
||||
setFavIconUtils(dbFeed);
|
||||
dbFeed.setId((int)(database.feedDao().insert(dbFeed)));
|
||||
if (Boolean.valueOf(database.feedDao().feedExists(dbFeed.getUrl())))
|
||||
return null; // feed already inserted
|
||||
|
||||
setFavIconUtils(dbFeed);
|
||||
|
||||
// we need empty headers to query the feed just after, without any 304 result
|
||||
dbFeed.setEtag(null);
|
||||
dbFeed.setLastModified(null);
|
||||
|
||||
dbFeed.setId((int)(database.feedDao().insert(dbFeed)));
|
||||
return dbFeed;
|
||||
}
|
||||
|
||||
|
@ -36,8 +36,8 @@ public class MainViewModel extends AndroidViewModel {
|
||||
repository.setCallback(simpleCallback);
|
||||
}
|
||||
|
||||
public Completable sync() {
|
||||
return repository.sync(null);
|
||||
public Completable sync(List<Feed> feeds) {
|
||||
return repository.sync(feeds);
|
||||
}
|
||||
|
||||
public void addFeed(ParsingResult parsingResult) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user