|  |  | @ -11,7 +11,6 @@ import android.view.View; | 
			
		
	
		
			
				
					|  |  |  | import android.widget.ProgressBar; | 
			
		
	
		
			
				
					|  |  |  | import android.widget.Toast; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import org.jsoup.Jsoup; | 
			
		
	
		
			
				
					|  |  |  | import org.jsoup.nodes.Document; | 
			
		
	
		
			
				
					|  |  |  | import org.jsoup.nodes.Element; | 
			
		
	
		
			
				
					|  |  |  | import org.jsoup.select.Elements; | 
			
		
	
	
		
			
				
					|  |  | @ -19,15 +18,13 @@ import org.jsoup.select.Elements; | 
			
		
	
		
			
				
					|  |  |  | import java.util.ArrayList; | 
			
		
	
		
			
				
					|  |  |  | import java.util.Objects; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import javax.net.ssl.SSLHandshakeException; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.R; | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.base.BaseActivity; | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.model.Download; | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.model.ThmmyPage; | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.utils.ParseTask; | 
			
		
	
		
			
				
					|  |  |  | import gr.thmmy.mthmmy.utils.exceptions.ParseException; | 
			
		
	
		
			
				
					|  |  |  | import me.zhanghai.android.materialprogressbar.MaterialProgressBar; | 
			
		
	
		
			
				
					|  |  |  | import okhttp3.Request; | 
			
		
	
		
			
				
					|  |  |  | import okhttp3.Response; | 
			
		
	
		
			
				
					|  |  |  | import timber.log.Timber; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | public class DownloadsActivity extends BaseActivity implements DownloadsAdapter.OnLoadMoreListener { | 
			
		
	
	
		
			
				
					|  |  | @ -159,16 +156,14 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * An {@link AsyncTask} that handles asynchronous fetching of a downloads page and parsing it's | 
			
		
	
		
			
				
					|  |  |  |      * data. {@link AsyncTask#onPostExecute(Object) OnPostExecute} method calls {@link RecyclerView#swapAdapter} | 
			
		
	
		
			
				
					|  |  |  |      * An {@link ParseTask} that handles asynchronous fetching of a downloads page and parsing it's | 
			
		
	
		
			
				
					|  |  |  |      * data. {@link ParseTask#postParsing(ResultCode) postParsing} method calls {@link RecyclerView#swapAdapter} | 
			
		
	
		
			
				
					|  |  |  |      * to build graphics. | 
			
		
	
		
			
				
					|  |  |  |      * <p> | 
			
		
	
		
			
				
					|  |  |  |      * <p>Calling TopicTask's {@link AsyncTask#execute execute} method needs to have profile's url | 
			
		
	
		
			
				
					|  |  |  |      * <p>Calling TopicTask's {@link ParseTask#execute execute} method needs to have profile's url | 
			
		
	
		
			
				
					|  |  |  |      * as String parameter!</p> | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     class ParseDownloadPageTask extends AsyncTask<String, Void, Void> { | 
			
		
	
		
			
				
					|  |  |  |         private String thisPageUrl; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private class ParseDownloadPageTask extends ParseTask { | 
			
		
	
		
			
				
					|  |  |  |         @Override | 
			
		
	
		
			
				
					|  |  |  |         protected void onPreExecute() { | 
			
		
	
		
			
				
					|  |  |  |             if (!isLoadingMore) progressBar.setVisibility(ProgressBar.VISIBLE); | 
			
		
	
	
		
			
				
					|  |  | @ -176,36 +171,7 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         @Override | 
			
		
	
		
			
				
					|  |  |  |         protected Void doInBackground(String... downloadsUrl) { | 
			
		
	
		
			
				
					|  |  |  |             thisPageUrl = downloadsUrl[0]; | 
			
		
	
		
			
				
					|  |  |  |             Request request = new Request.Builder() | 
			
		
	
		
			
				
					|  |  |  |                     .url(downloadsUrl[0]) | 
			
		
	
		
			
				
					|  |  |  |                     .build(); | 
			
		
	
		
			
				
					|  |  |  |             try { | 
			
		
	
		
			
				
					|  |  |  |                 Response response = client.newCall(request).execute(); | 
			
		
	
		
			
				
					|  |  |  |                 parseDownloads(Jsoup.parse(response.body().string())); | 
			
		
	
		
			
				
					|  |  |  |             } catch (SSLHandshakeException e) { | 
			
		
	
		
			
				
					|  |  |  |                 Timber.w("Certificate problem (please switch to unsafe connection)."); | 
			
		
	
		
			
				
					|  |  |  |             } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                 Timber.e(e, "Exception"); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             return null; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         @Override | 
			
		
	
		
			
				
					|  |  |  |         protected void onPostExecute(Void voids) { | 
			
		
	
		
			
				
					|  |  |  |             if (downloadsTitle != null && !Objects.equals(downloadsTitle, "") && | 
			
		
	
		
			
				
					|  |  |  |                     toolbar.getTitle() != downloadsTitle) | 
			
		
	
		
			
				
					|  |  |  |                 toolbar.setTitle(downloadsTitle); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             ++pagesLoaded; | 
			
		
	
		
			
				
					|  |  |  |             if (uploadFAB.getVisibility() != View.GONE) uploadFAB.setEnabled(true); | 
			
		
	
		
			
				
					|  |  |  |             progressBar.setVisibility(ProgressBar.INVISIBLE); | 
			
		
	
		
			
				
					|  |  |  |             downloadsAdapter.notifyDataSetChanged(); | 
			
		
	
		
			
				
					|  |  |  |             isLoadingMore = false; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         private void parseDownloads(Document downloadPage) { | 
			
		
	
		
			
				
					|  |  |  |         protected void parse(Document downloadPage) throws ParseException { | 
			
		
	
		
			
				
					|  |  |  |             if (downloadsTitle == null || Objects.equals(downloadsTitle, "")) | 
			
		
	
		
			
				
					|  |  |  |                 downloadsTitle = downloadPage.select("div.nav>b>a.nav").last().text(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -215,7 +181,7 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             Download.DownloadItemType type; | 
			
		
	
		
			
				
					|  |  |  |             if (ThmmyPage.resolvePageCategory(Uri.parse(thisPageUrl)).is(ThmmyPage. | 
			
		
	
		
			
				
					|  |  |  |             if (ThmmyPage.resolvePageCategory(Uri.parse(url)).is(ThmmyPage. | 
			
		
	
		
			
				
					|  |  |  |                     PageCategory.DOWNLOADS_CATEGORY)) | 
			
		
	
		
			
				
					|  |  |  |                 type = Download.DownloadItemType.DOWNLOADS_CATEGORY; | 
			
		
	
		
			
				
					|  |  |  |             else type = Download.DownloadItemType.DOWNLOADS_FILE; | 
			
		
	
	
		
			
				
					|  |  | @ -265,5 +231,19 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. | 
			
		
	
		
			
				
					|  |  |  |                         rows.select("span:has(a)").first().text())); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         @Override | 
			
		
	
		
			
				
					|  |  |  |         protected void postParsing(ResultCode result) { | 
			
		
	
		
			
				
					|  |  |  |             if (downloadsTitle != null && !Objects.equals(downloadsTitle, "") && | 
			
		
	
		
			
				
					|  |  |  |                     toolbar.getTitle() != downloadsTitle) | 
			
		
	
		
			
				
					|  |  |  |                 toolbar.setTitle(downloadsTitle); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             ++pagesLoaded; | 
			
		
	
		
			
				
					|  |  |  |             if (uploadFAB.getVisibility() != View.GONE) uploadFAB.setEnabled(true); | 
			
		
	
		
			
				
					|  |  |  |             progressBar.setVisibility(ProgressBar.INVISIBLE); | 
			
		
	
		
			
				
					|  |  |  |             downloadsAdapter.notifyDataSetChanged(); | 
			
		
	
		
			
				
					|  |  |  |             isLoadingMore = false; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |