Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid-Development <david-dev@live.de>2021-01-02 21:57:21 +0300
committerDavid Luhmer <david-dev@live.de>2021-01-02 21:57:21 +0300
commit453b91000b88615fdda3ca9aacbd000653fe2066 (patch)
tree7f938d230fd5f465dbc59e116dbe083c93a723b4 /News-Android-App/src/main/java
parent6aa37c08e91bae33713c3a1840f1efbed4ff2c56 (diff)
show progress and status of feeds during import (ignore single failing feeds)
Signed-off-by: David Luhmer <david-dev@live.de>
Diffstat (limited to 'News-Android-App/src/main/java')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java59
1 files changed, 40 insertions, 19 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
index 29e2adc9..35284bb9 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
@@ -47,6 +47,7 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -236,7 +237,7 @@ public class NewFeedActivity extends AppCompatActivity {
}
}
- public class ImportOpmlSubscriptionsTask extends AsyncTask<Void, Void, Boolean> {
+ public class ImportOpmlSubscriptionsTask extends AsyncTask<Void, List<String>, Boolean> {
private final String mUrlToFile;
private HashMap<String, String> extractedUrls;
@@ -254,7 +255,7 @@ public class NewFeedActivity extends AppCompatActivity {
pd.setTitle("Parsing OMPL...");
pd.setMessage("Please wait.");
pd.setCancelable(false);
- pd.setIndeterminate(true);
+ pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.show();
super.onPreExecute();
@@ -277,34 +278,49 @@ public class NewFeedActivity extends AppCompatActivity {
parser.nextTag();
extractedUrls = OpmlXmlParser.ReadFeed(parser);
- publishProgress();
+ List<String> result = new ArrayList<>();
+ publishProgress(result);
final HashMap<String, Long> existingFolders = new HashMap<>();
mApi.getNewsAPI().folders().blockingSubscribe(folders -> {
- for(Folder folder : folders) {
+ for (Folder folder : folders) {
existingFolders.put(folder.getLabel(), folder.getId());
}
});
- for(String feedUrl : extractedUrls.keySet()) {
+ for (String feedUrl : extractedUrls.keySet()) {
long folderId = 0; //id of the parent folder, 0 for root
String folderName = extractedUrls.get(feedUrl);
if(folderName != null) { //Get Folder ID (create folder if not exists)
- if(existingFolders.containsKey(folderName)) { //Check if folder exists
- folderId = existingFolders.get(folderName);
- } else { //If not, create a new one on the server
- //mApi.getAPI().createFolder(foldername) // HttpJsonRequest.getInstance().performCreateFolderRequest(api.getFolderUrl(), folderName);
- final Map<String, Object> folderMap = new HashMap<>(2);
+ if (!existingFolders.containsKey(folderName)) {
+ // If folder does not exist, create a new one on the server
+ final Map<String, Object> folderMap = new HashMap<>(1);
folderMap.put("name", folderName);
Folder folder = mApi.getNewsAPI().createFolder(folderMap).execute().body().get(0);
- //TODO test this!!!
- existingFolders.put(folder.getLabel(), folder.getId()); //Add folder to list of existing folder in order to prevent that the method tries to create it multiple times
+ folderId = folder.getId();
+ // Add folder to list of existing folder in order to prevent that the method tries to create it multiple times
+ existingFolders.put(folder.getLabel(), folderId);
}
+
+ folderId = existingFolders.get(folderName);
+ }
+
+ Response<List<Feed>> response = mApi.getNewsAPI().createFeed(feedUrl, folderId).execute();
+ if (response.isSuccessful()) {
+ Feed feed = response.body().get(0);
+ result.add("✓ " + feed.getLink());
+ Log.e(TAG, "Successfully imported feed: " + feedUrl + " - Feed-ID: " + feed.getId());
+ } else if (response.code() == 409) {
+ // already exists
+ result.add("✓ " + " - " + feedUrl);
+ } else {
+ result.add("✗ " + response.code() + " - " + feedUrl);
+ Log.e(TAG, "Failed to import feed: " + feedUrl + " - Status-Code: " + response.code());
+ Log.e(TAG, response.errorBody().string());
}
- Feed feed = mApi.getNewsAPI().createFeed(feedUrl, folderId).execute().body().get(0);
- Log.v(TAG, "New Feed-ID: " + feed.getId());
+ publishProgress(result);
}
} catch (Exception e) {
e.printStackTrace();
@@ -314,11 +330,16 @@ public class NewFeedActivity extends AppCompatActivity {
}
@Override
- protected void onProgressUpdate(Void... values) {
- String text = "Extracted the following feeds:\n";
- for (String url : extractedUrls.keySet()) {
- text += "\n" + url;
+ protected void onProgressUpdate(List<String>... values) {
+ String text = "This might take a few minutes.. please wait:\n";
+
+ List<String> log = values[0];
+ for (String line : log) {
+ text += "\n" + line;
}
+
+ pd.setMax(extractedUrls.size());
+ pd.setProgress(log.size());
pd.setMessage(text);
super.onProgressUpdate(values);
@@ -333,7 +354,7 @@ public class NewFeedActivity extends AppCompatActivity {
if(!result) {
Toast.makeText(mContext, "Failed to parse OPML file", Toast.LENGTH_SHORT).show();
} else {
- Toast.makeText(mContext, "Successfully imported OPML!", Toast.LENGTH_LONG).show();
+ Toast.makeText(mContext, "Imported done!", Toast.LENGTH_LONG).show();
}
super.onPostExecute(result);