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

Unverified Commit fb20691a authored by alperozturk's avatar alperozturk
Browse files

add create share

parent 2fa741d9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializer;
import com.google.gson.Strictness;
import com.nextcloud.android.sso.api.NextcloudAPI;
import com.nextcloud.android.sso.model.SingleSignOnAccount;

@@ -115,6 +116,7 @@ public class ApiProvider {
            Log.v(TAG, "NextcloudRequest account: " + ssoAccount.name);
            final var nextcloudAPI = new NextcloudAPI(context.getApplicationContext(), ssoAccount,
                    new GsonBuilder()
                            .setStrictness(Strictness.LENIENT)
                            .excludeFieldsWithoutExposeAnnotation()
                            .registerTypeHierarchyAdapter(Calendar.class, (JsonSerializer<Calendar>) (src, typeOfSrc, ctx) -> new JsonPrimitive(src.getTimeInMillis() / 1_000))
                            .registerTypeHierarchyAdapter(Calendar.class, (JsonDeserializer<Calendar>) (src, typeOfSrc, ctx) -> {
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 *
 * @link <a href="https://github.com/nextcloud/notes/wiki/API-0.2">Notes API v0.2</a>
 */
public interface NotesAPI_0_2 {
+4 −14
Original line number Diff line number Diff line
@@ -2,12 +2,12 @@ package it.niedermann.owncloud.notes.persistence.sync

import com.nextcloud.android.sso.api.EmptyResponse
import com.owncloud.android.lib.resources.shares.OCShare
import com.owncloud.android.lib.resources.shares.ShareType
import it.niedermann.owncloud.notes.share.model.CreateShareRequest
import it.niedermann.owncloud.notes.share.model.CreateShareResponse
import it.niedermann.owncloud.notes.shared.model.OcsResponse
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET
import retrofit2.http.PATCH
import retrofit2.http.POST
@@ -40,16 +40,6 @@ interface ShareAPI {
    @PATCH("shares")
    fun updateShare(remoteShareId: Long): Call<OcsResponse<List<OCShare>>>

    @FormUrlEncoded
    @POST("shares")
    fun addShare(
        @Field("remoteFilePath") remoteFilePath: String,
        @Field("shareType") shareType: ShareType,
        @Field("shareWith") shareWith: String,
        @Field("publicUpload") publicUpload: Boolean,
        @Field("password") password: String,
        @Field("permissions") permissions: Int,
        @Field("getShareDetails") getShareDetails: Boolean,
        @Field("note") note: String
    ): Call<OcsResponse<List<OCShare>>>
    fun addShare(@Body request: CreateShareRequest): Call<OcsResponse<CreateShareResponse>>
}
+4 −7
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ import it.niedermann.owncloud.notes.branding.BrandedActivity;
import it.niedermann.owncloud.notes.branding.BrandedSnackbar;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.ActivityNoteShareBinding;
import it.niedermann.owncloud.notes.persistence.ShareRepository;
import it.niedermann.owncloud.notes.share.repository.ShareRepository;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.share.adapter.ShareeListAdapter;
@@ -160,7 +160,7 @@ public class NoteShareActivity extends BrandedActivity implements ShareeListAdap
        // avoid fullscreen with softkeyboard
        binding.searchView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

        ShareRepository repository = ShareRepository.getInstance(getApplicationContext());
        ShareRepository repository = new ShareRepository(this);
        UsersAndGroupsSearchProvider provider = new UsersAndGroupsSearchProvider(this, repository);
        binding.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
@@ -174,12 +174,9 @@ public class NoteShareActivity extends BrandedActivity implements ShareeListAdap
            public boolean onQueryTextChange(String newText) {
                new Thread(() -> {{
                    try (Cursor cursor = provider.searchForUsersOrGroups(newText)) {
                        if (cursor == null) {
                            Log_OC.d(TAG,"searchForUsersOrGroups returned null");
                            return;
                        }

                        if (cursor != null) {
                            runOnUiThread(() -> suggestionAdapter.changeCursor(cursor));
                        }
                    } catch (Exception e) {
                        Log_OC.d(TAG,"Exception setupSearchView.onQueryTextChange: " + e);
                    }
+38 −4
Original line number Diff line number Diff line
@@ -4,6 +4,9 @@ import android.content.res.Configuration
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import androidx.lifecycle.lifecycleScope
import com.nextcloud.android.sso.helper.SingleAccountHelper
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.resources.shares.OCShare
import com.owncloud.android.lib.resources.shares.SharePermissionsBuilder
import com.owncloud.android.lib.resources.shares.ShareType
@@ -14,9 +17,12 @@ import it.niedermann.owncloud.notes.databinding.ActivityNoteShareDetailBinding
import it.niedermann.owncloud.notes.persistence.entity.Note
import it.niedermann.owncloud.notes.share.dialog.ExpirationDatePickerDialogFragment
import it.niedermann.owncloud.notes.share.helper.SharingMenuHelper
import it.niedermann.owncloud.notes.share.repository.ShareRepository
import it.niedermann.owncloud.notes.shared.util.DisplayUtils
import it.niedermann.owncloud.notes.shared.util.extensions.getParcelableArgument
import it.niedermann.owncloud.notes.shared.util.extensions.getSerializableArgument
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.Date

@@ -91,7 +97,7 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra
    }

    private lateinit var binding: ActivityNoteShareDetailBinding
    private var file: Note? = null // file to be share
    private var note: Note? = null // note to be share
    private var shareeName: String? = null
    private lateinit var shareType: ShareType
    private var shareProcessStep = SCREEN_TYPE_PERMISSION // default screen type
@@ -104,7 +110,7 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra
    private var isSecureShare: Boolean = false

    private var expirationDatePickerFragment: ExpirationDatePickerDialogFragment? = null

    private lateinit var repository: ShareRepository

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -114,7 +120,7 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra
        val arguments = intent.extras

        arguments?.let {
            file = it.getSerializableArgument(ARG_NOTE, Note::class.java)
            note = it.getSerializableArgument(ARG_NOTE, Note::class.java)
            shareeName = it.getString(ARG_SHAREE_NAME)
            share = it.getParcelableArgument(ARG_OCSHARE, OCShare::class.java)

@@ -132,6 +138,7 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra

        // capabilities = CapabilityUtils.getCapability(context)

        repository = ShareRepository(this)
        if (shareProcessStep == SCREEN_TYPE_PERMISSION) {
            showShareProcessFirst()
        } else {
@@ -237,7 +244,7 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra

    private fun setupUpdateUI() {
        binding.shareProcessBtnNext.text = getString(R.string.note_share_detail_activity_common_next)
        file.let {
        note.let {
            updateViewForFile()
            updateViewForShareType()
        }
@@ -544,6 +551,33 @@ class NoteShareDetailActivity : BrandedActivity(), ExpirationDatePickerDialogFra
        onShareProcessClosed()
         */

        val noteText = binding.noteText.text.toString().trim()

        lifecycleScope.launch(Dispatchers.IO) {
            val ssoAcc = SingleAccountHelper.getCurrentSingleSignOnAccount(this@NoteShareDetailActivity)

            // if modifying existing share then directly update the note and send email
            if (share != null && share?.note != noteText) {
                // repository.updateShare(ssoAcc,share, noteText)
            } else {
                if (note == null || shareeName == null) {
                    Log_OC.d(TAG, "validateShareProcessSecond cancelled")
                    return@launch
                }

                // else create new share
                repository.addShare(
                    ssoAcc,
                    note!!,
                    shareType,
                    shareeName!!,
                    "false", // TODO: Check how to determine it
                    binding.shareProcessEnterPassword.text.toString().trim(),
                    permission,
                    noteText
                )
            }
        }
    }

    override fun onDateSet(year: Int, monthOfYear: Int, dayOfMonth: Int, chosenDateInMillis: Long) {
Loading