Loading presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt +11 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,17 @@ class Navigator @Inject constructor( startActivityExternal(intent) } fun shareFile(file: File) { val data = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file) val type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(file.name.split(".").last()) val intent = Intent(Intent.ACTION_SEND) .setType(type) .putExtra(Intent.EXTRA_STREAM, data) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) startActivityExternal(intent) } fun showNotificationSettings(threadId: Long = 0) { val intent = Intent(context, NotificationPrefsActivity::class.java) intent.putExtra("threadId", threadId) Loading presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ class GalleryActivity : QkActivity(), GalleryView { private val permissionResultSubject: Subject<Unit> = PublishSubject.create() override fun onCreate(savedInstanceState: Bundle?) { delegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES) delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES AndroidInjection.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.gallery_activity) Loading presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt +16 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package com.moez.QKSMS.feature.gallery import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.extensions.makeToast import com.moez.QKSMS.extensions.mapNotNull Loading @@ -37,11 +38,12 @@ import javax.inject.Named class GalleryViewModel @Inject constructor( conversationRepo: ConversationRepository, messageRepo: MessageRepository, @Named("partId") private val partId: Long, private val context: Context, private val messageRepo: MessageRepository, private val navigator: Navigator, private val saveImage: SaveImage, private val permissionManager: PermissionManager private val permissions: PermissionManager ) : QkViewModel<GalleryView, GalleryState>(GalleryState()) { init { Loading @@ -60,10 +62,10 @@ class GalleryViewModel @Inject constructor( override fun bindView(view: GalleryView) { super.bindView(view) view.permissionResult() .map { permissionManager.hasStorage() } .map { permissions.hasStorage() } .autoDisposable(view.scope()) .subscribe{ if(permissionManager.hasStorage()) if(permissions.hasStorage()) saveImage.execute(partId) { context.makeToast(R.string.gallery_toast_saved) } } // When the screen is touched, toggle the visibility of the navigation UI Loading @@ -76,16 +78,23 @@ class GalleryViewModel @Inject constructor( // Save image to device view.optionsItemSelected() .filter { itemId -> itemId == R.id.save } .filter { permissionManager.hasStorage().also { if (!it) view.requestStoragePermission() } } .filter { permissions.hasStorage().also { if (!it) view.requestStoragePermission() } } .withLatestFrom(view.pageChanged()) { _, part -> part.id } .autoDisposable(view.scope()) .subscribe { partId -> if(permissionManager.hasStorage()) if(permissions.hasStorage()) saveImage.execute(partId) { context.makeToast(R.string.gallery_toast_saved) } else view.requestStoragePermission() } // Share image externally view.optionsItemSelected() .filter { itemId -> itemId == R.id.share } .filter { permissions.hasStorage().also { if (!it) view.requestStoragePermission() } } .withLatestFrom(view.pageChanged()) { _, part -> part.id } .autoDisposable(view.scope()) .subscribe { partId -> messageRepo.savePart(partId)?.let(navigator::shareFile) } } } presentation/src/main/res/menu/gallery.xml +5 −1 Original line number Diff line number Diff line Loading @@ -23,4 +23,8 @@ android:id="@+id/save" android:title="@string/menu_save" /> <item android:id="@+id/share" android:title="@string/menu_share" /> </menu> presentation/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ <string name="menu_call">Call</string> <string name="menu_info">Details</string> <string name="menu_save">Save to gallery</string> <string name="menu_share">Share</string> <string name="main_drawer_open_cd">Open navigation drawer</string> <string name="main_title_selected">%d selected</string> Loading Loading
presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt +11 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,17 @@ class Navigator @Inject constructor( startActivityExternal(intent) } fun shareFile(file: File) { val data = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file) val type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(file.name.split(".").last()) val intent = Intent(Intent.ACTION_SEND) .setType(type) .putExtra(Intent.EXTRA_STREAM, data) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) startActivityExternal(intent) } fun showNotificationSettings(threadId: Long = 0) { val intent = Intent(context, NotificationPrefsActivity::class.java) intent.putExtra("threadId", threadId) Loading
presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ class GalleryActivity : QkActivity(), GalleryView { private val permissionResultSubject: Subject<Unit> = PublishSubject.create() override fun onCreate(savedInstanceState: Bundle?) { delegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES) delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES AndroidInjection.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.gallery_activity) Loading
presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryViewModel.kt +16 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package com.moez.QKSMS.feature.gallery import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkViewModel import com.moez.QKSMS.common.util.extensions.makeToast import com.moez.QKSMS.extensions.mapNotNull Loading @@ -37,11 +38,12 @@ import javax.inject.Named class GalleryViewModel @Inject constructor( conversationRepo: ConversationRepository, messageRepo: MessageRepository, @Named("partId") private val partId: Long, private val context: Context, private val messageRepo: MessageRepository, private val navigator: Navigator, private val saveImage: SaveImage, private val permissionManager: PermissionManager private val permissions: PermissionManager ) : QkViewModel<GalleryView, GalleryState>(GalleryState()) { init { Loading @@ -60,10 +62,10 @@ class GalleryViewModel @Inject constructor( override fun bindView(view: GalleryView) { super.bindView(view) view.permissionResult() .map { permissionManager.hasStorage() } .map { permissions.hasStorage() } .autoDisposable(view.scope()) .subscribe{ if(permissionManager.hasStorage()) if(permissions.hasStorage()) saveImage.execute(partId) { context.makeToast(R.string.gallery_toast_saved) } } // When the screen is touched, toggle the visibility of the navigation UI Loading @@ -76,16 +78,23 @@ class GalleryViewModel @Inject constructor( // Save image to device view.optionsItemSelected() .filter { itemId -> itemId == R.id.save } .filter { permissionManager.hasStorage().also { if (!it) view.requestStoragePermission() } } .filter { permissions.hasStorage().also { if (!it) view.requestStoragePermission() } } .withLatestFrom(view.pageChanged()) { _, part -> part.id } .autoDisposable(view.scope()) .subscribe { partId -> if(permissionManager.hasStorage()) if(permissions.hasStorage()) saveImage.execute(partId) { context.makeToast(R.string.gallery_toast_saved) } else view.requestStoragePermission() } // Share image externally view.optionsItemSelected() .filter { itemId -> itemId == R.id.share } .filter { permissions.hasStorage().also { if (!it) view.requestStoragePermission() } } .withLatestFrom(view.pageChanged()) { _, part -> part.id } .autoDisposable(view.scope()) .subscribe { partId -> messageRepo.savePart(partId)?.let(navigator::shareFile) } } }
presentation/src/main/res/menu/gallery.xml +5 −1 Original line number Diff line number Diff line Loading @@ -23,4 +23,8 @@ android:id="@+id/save" android:title="@string/menu_save" /> <item android:id="@+id/share" android:title="@string/menu_share" /> </menu>
presentation/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ <string name="menu_call">Call</string> <string name="menu_info">Details</string> <string name="menu_save">Save to gallery</string> <string name="menu_share">Share</string> <string name="main_drawer_open_cd">Open navigation drawer</string> <string name="main_title_selected">%d selected</string> Loading