Skip to content

Commit 0cb7a54

Browse files
maskaravivekashishkumar468
authored andcommitted
Convert download code to kotlin (commons-app#3665)
1 parent 8fcf495 commit 0cb7a54

File tree

2 files changed

+31
-59
lines changed

2 files changed

+31
-59
lines changed

app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java

Lines changed: 14 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,27 @@
2626
import fr.free.nrw.commons.bookmarks.Bookmark;
2727
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider;
2828
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao;
29+
import fr.free.nrw.commons.category.CategoryImagesCallback;
2930
import fr.free.nrw.commons.contributions.Contribution;
3031
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
31-
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
32+
import fr.free.nrw.commons.kvstore.JsonKvStore;
3233
import fr.free.nrw.commons.utils.DownloadUtils;
3334
import fr.free.nrw.commons.utils.ImageUtils;
3435
import fr.free.nrw.commons.utils.NetworkUtils;
3536
import fr.free.nrw.commons.utils.ViewUtil;
36-
import io.reactivex.disposables.CompositeDisposable;
37-
import java.util.Objects;
3837
import javax.inject.Inject;
38+
import javax.inject.Named;
3939
import timber.log.Timber;
4040

4141
public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment implements ViewPager.OnPageChangeListener {
4242

43+
@Inject SessionManager sessionManager;
44+
@Inject @Named("default_preferences") JsonKvStore store;
4345
@Inject BookmarkPicturesDao bookmarkDao;
4446

45-
@Inject
46-
protected OkHttpJsonApiClient okHttpJsonApiClient;
47-
48-
@Inject
49-
protected SessionManager sessionManager;
50-
51-
private static CompositeDisposable compositeDisposable = new CompositeDisposable();
52-
5347
@BindView(R.id.mediaDetailsPager) ViewPager pager;
5448
private Boolean editable;
5549
private boolean isFeaturedImage;
56-
private boolean isWikipediaButtonDisplayed;
5750
MediaDetailAdapter adapter;
5851
private Bookmark bookmark;
5952
private MediaDetailProvider provider;
@@ -172,10 +165,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
172165
// Set wallpaper
173166
setWallpaper(m);
174167
return true;
175-
case R.id.menu_set_as_avatar:
176-
// Set avatar
177-
setAvatar(m);
178-
return true;
179168
default:
180169
return super.onOptionsItemSelected(item);
181170
}
@@ -194,20 +183,6 @@ private void setWallpaper(Media media) {
194183
ImageUtils.setWallpaperFromImageUrl(getActivity(), Uri.parse(media.getImageUrl()));
195184
}
196185

197-
/**
198-
* Set the media as user's leaderboard avatar
199-
* @param media
200-
*/
201-
private void setAvatar(Media media) {
202-
if (media.getImageUrl() == null || media.getImageUrl().isEmpty()) {
203-
Timber.d("Media URL not present");
204-
return;
205-
}
206-
ImageUtils.setAvatarFromImageUrl(getActivity(), media.getImageUrl(),
207-
Objects.requireNonNull(sessionManager.getCurrentAccount()).name,
208-
okHttpJsonApiClient, compositeDisposable);
209-
}
210-
211186
@Override
212187
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
213188
if (!editable) { // Disable menu options for editable views
@@ -219,8 +194,7 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
219194
return;
220195
}
221196

222-
final int position = pager.getCurrentItem();
223-
Media m = provider.getMediaAtPosition(position);
197+
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
224198
if (m != null) {
225199
// Enable default set of actions, then re-enable different set of actions only if it is a failed contrib
226200
menu.findItem(R.id.menu_browser_current_image).setEnabled(true).setVisible(true);
@@ -236,9 +210,10 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
236210
BookmarkPicturesContentProvider.uriForName(m.getFilename())
237211
);
238212
updateBookmarkState(menu.findItem(R.id.menu_bookmark_current_image));
239-
final Integer contributionState = provider.getContributionStateAt(position);
240-
if (contributionState != null) {
241-
switch (contributionState) {
213+
214+
if (m instanceof Contribution) {
215+
Contribution c = (Contribution) m;
216+
switch (c.getState()) {
242217
case Contribution.STATE_FAILED:
243218
case Contribution.STATE_IN_PROGRESS:
244219
case Contribution.STATE_QUEUED:
@@ -280,12 +255,6 @@ private void updateBookmarkState(MenuItem item) {
280255
item.setIcon(icon);
281256
}
282257

283-
public void showImage(int i, boolean isWikipediaButtonDisplayed) {
284-
this.isWikipediaButtonDisplayed = isWikipediaButtonDisplayed;
285-
Handler handler = new Handler();
286-
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
287-
}
288-
289258
public void showImage(int i) {
290259
Handler handler = new Handler();
291260
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
@@ -295,9 +264,7 @@ public void showImage(int i) {
295264
* The method notify the viewpager that number of items have changed.
296265
*/
297266
public void notifyDataSetChanged(){
298-
if (null != adapter) {
299-
adapter.notifyDataSetChanged();
300-
}
267+
adapter.notifyDataSetChanged();
301268
}
302269

303270
@Override
@@ -306,6 +273,8 @@ public void onPageScrolled(int i, float v, int i2) {
306273
Timber.d("Returning as activity is destroyed!");
307274
return;
308275
}
276+
if (i+1 >= adapter.getCount() && getContext() instanceof CategoryImagesCallback)
277+
((CategoryImagesCallback) getContext()).requestMoreImages();
309278

310279
getActivity().invalidateOptionsMenu();
311280
}
@@ -328,8 +297,6 @@ public interface MediaDetailProvider {
328297
Media getMediaAtPosition(int i);
329298

330299
int getTotalMediaCount();
331-
332-
Integer getContributionStateAt(int position);
333300
}
334301

335302
//FragmentStatePagerAdapter allows user to swipe across collection of images (no. of images undetermined)
@@ -349,7 +316,7 @@ public Fragment getItem(int i) {
349316
}
350317
pager.postDelayed(() -> getActivity().invalidateOptionsMenu(), 5);
351318
}
352-
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage, isWikipediaButtonDisplayed);
319+
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
353320
}
354321

355322
@Override

app/src/main/java/fr/free/nrw/commons/utils/DownloadUtils.kt

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,27 @@ object DownloadUtils {
2020
*/
2121
@JvmStatic
2222
fun downloadMedia(activity: Activity?, m: Media) {
23-
val imageUrl = m.imageUrl
24-
var fileName = m.filename
25-
if (imageUrl == null || fileName == null || activity == null) {
26-
Timber.d("Skipping download media as either imageUrl $imageUrl or filename $fileName activity is null")
23+
val imageUrl = m.getImageUrl()
24+
var fileName = m.getFilename()
25+
if (imageUrl == null || fileName == null || activity == null
26+
) {
27+
Timber.d(
28+
"Skipping download media as either imageUrl %s or filename %s activity is null",
29+
imageUrl, fileName
30+
)
2731
return
2832
}
2933
// Strip 'File:' from beginning of filename, we really shouldn't store it
30-
fileName = fileName.substringAfter("File:")
34+
fileName = fileName.replaceFirst("^File:".toRegex(), "")
3135
val imageUri = Uri.parse(imageUrl)
32-
val req = DownloadManager.Request(imageUri).apply {
33-
setTitle(m.displayTitle)
34-
setDescription(activity.getString(R.string.app_name))
35-
setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)
36-
allowScanningByMediaScanner()
37-
setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
38-
}
36+
val req = DownloadManager.Request(imageUri)
37+
//These are not the image title and description fields, they are download descs for notifications
38+
req.setDescription(activity.getString(R.string.app_name))
39+
req.setTitle(m.displayTitle)
40+
req.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)
41+
// Modern Android updates the gallery automatically. Yay!
42+
req.allowScanningByMediaScanner()
43+
req.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
3944
PermissionUtils.checkPermissionsAndPerformAction(
4045
activity,
4146
permission.WRITE_EXTERNAL_STORAGE,

0 commit comments

Comments
 (0)