Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2db9b66 authored by Moez Bhatti's avatar Moez Bhatti
Browse files

Share photos externally

Closes #1442
parent 889d298f
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -266,6 +266,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)
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ class GalleryActivity : QkActivity(), GalleryView {
    private val viewModel by lazy { ViewModelProviders.of(this, viewModelFactory)[GalleryViewModel::class.java] }

    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)
+12 −2
Original line number Diff line number Diff line
@@ -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
@@ -37,9 +38,10 @@ 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 permissions: PermissionManager
) : QkViewModel<GalleryView, GalleryState>(GalleryState()) {
@@ -74,6 +76,14 @@ class GalleryViewModel @Inject constructor(
                .withLatestFrom(view.pageChanged()) { _, part -> part.id }
                .autoDisposable(view.scope())
                .subscribe { partId -> saveImage.execute(partId) { context.makeToast(R.string.gallery_toast_saved) } }

        // 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) }
    }

}
+5 −1
Original line number Diff line number Diff line
@@ -23,4 +23,8 @@
        android:id="@+id/save"
        android:title="@string/menu_save" />

    <item
        android:id="@+id/share"
        android:title="@string/menu_share" />

</menu>
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,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>