Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions changelog/unreleased/5002
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Change: Refactor legacy sharing and space members code

Legacy sharing classes have been renamed with an Ocs prefix, the UI shared between
shares and space members has been consolidated into neutral, reusable components, and
the space members logic has been aligned with the graph shares implementation.

https://github.com/owncloud/android/issues/4971
https://github.com/owncloud/android/pull/5002
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
* ownCloud Android client application
*
* @author David González Verdugo
* Copyright (C) 2020 ownCloud GmbH.
* @author Jorge Aguado Recio
*
* Copyright (C) 2026 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
Expand Down Expand Up @@ -34,8 +36,8 @@ import com.owncloud.android.domain.sharing.shares.model.OCShare
import com.owncloud.android.domain.sharing.shares.model.ShareType
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.sharees.SearchShareesFragment
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.sharees.SearchOcsShareesFragment
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.sharing.shares.ui.TestShareFileActivity
import com.owncloud.android.testutil.OC_SHARE
import io.mockk.every
Expand All @@ -49,8 +51,8 @@ import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module

class SearchShareesFragmentTest {
private val shareViewModel = mockkClass(ShareViewModel::class, relaxed = true)
class SearchOcsShareesFragmentTest {
private val shareViewModel = mockkClass(OcsShareViewModel::class, relaxed = true)
private val sharesLiveData = MutableLiveData<Event<UIResult<List<OCShare>>>>()

@Before
Expand All @@ -72,7 +74,7 @@ class SearchShareesFragmentTest {
}

ActivityScenario.launch(TestShareFileActivity::class.java).onActivity {
val searchShareesFragment = SearchShareesFragment()
val searchShareesFragment = SearchOcsShareesFragment()
it.startFragment(searchShareesFragment)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
* ownCloud Android client application
*
* @author David González Verdugo
* Copyright (C) 2020 ownCloud GmbH.
* @author Jorge Aguado Recio
*
* Copyright (C) 2026 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
Expand Down Expand Up @@ -35,8 +37,8 @@ import com.owncloud.android.R
import com.owncloud.android.domain.sharing.shares.model.OCShare
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.sharees.EditPrivateShareFragment
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.sharees.EditPrivateOcsShareFragment
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.testutil.OC_ACCOUNT
import com.owncloud.android.testutil.OC_FILE
import com.owncloud.android.testutil.OC_FOLDER
Expand All @@ -54,10 +56,10 @@ import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module

class EditPrivateShareFragmentTest {
class EditPrivateOcsShareFragmentTest {
private val targetContext = InstrumentationRegistry.getInstrumentation().targetContext
private val defaultSharedWithDisplayName = "user"
private val shareViewModel = mockk<ShareViewModel>(relaxed = true)
private val shareViewModel = mockk<OcsShareViewModel>(relaxed = true)
private val privateShareAsLiveData = MutableLiveData<Event<UIResult<OCShare>>>()

private lateinit var activityScenario: ActivityScenario<TestShareFileActivity>
Expand Down Expand Up @@ -251,7 +253,7 @@ class EditPrivateShareFragmentTest {

val sharedFile = if (isFolder) OC_FOLDER else OC_FILE

val editPrivateShareFragment = EditPrivateShareFragment.newInstance(
val editPrivateShareFragment = EditPrivateOcsShareFragment.newInstance(
shareToEdit,
sharedFile,
OC_ACCOUNT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
* ownCloud Android client application
*
* @author David González Verdugo
* Copyright (C) 2020 ownCloud GmbH.
* @author Jorge Aguado Recio
*
* Copyright (C) 2026 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
Expand Down Expand Up @@ -37,9 +39,9 @@ import com.owncloud.android.domain.sharing.shares.model.OCShare
import com.owncloud.android.domain.sharing.shares.model.ShareType
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.ShareFileFragment
import com.owncloud.android.presentation.sharing.OcsShareFileFragment
import com.owncloud.android.presentation.capabilities.CapabilityViewModel
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.testutil.OC_ACCOUNT
import com.owncloud.android.testutil.OC_CAPABILITY
import com.owncloud.android.testutil.OC_FILE
Expand All @@ -58,10 +60,10 @@ import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module

class ShareFileFragmentTest {
class OcsShareFileFragmentTest {
private val capabilityViewModel = mockk<CapabilityViewModel>(relaxed = true)
private val capabilitiesLiveData = MutableLiveData<Event<UIResult<OCCapability>>>()
private val shareViewModel = mockk<ShareViewModel>(relaxed = true)
private val shareViewModel = mockk<OcsShareViewModel>(relaxed = true)
private val sharesLiveData = MutableLiveData<Event<UIResult<List<OCShare>>>>()

@Before
Expand Down Expand Up @@ -303,7 +305,7 @@ class ShareFileFragmentTest {
shares: List<OCShare> = listOf(OC_SHARE),
sharesUIResult: UIResult<List<OCShare>> = UIResult.Success(shares)
) {
val shareFileFragment = ShareFileFragment.newInstance(
val shareFileFragment = OcsShareFileFragment.newInstance(
OC_FILE,
OC_ACCOUNT
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
*
* @author David González Verdugo
* @author Jesus Recio Rincon
* Copyright (C) 2020 ownCloud GmbH.
* @author Jorge Aguado Recio
*
* Copyright (C) 2026 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
Expand Down Expand Up @@ -32,9 +34,9 @@ import com.owncloud.android.domain.capabilities.model.OCCapability
import com.owncloud.android.domain.sharing.shares.model.OCShare
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.ShareFileFragment
import com.owncloud.android.presentation.sharing.OcsShareFileFragment
import com.owncloud.android.presentation.capabilities.CapabilityViewModel
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.testutil.OC_ACCOUNT
import com.owncloud.android.testutil.OC_CAPABILITY
import com.owncloud.android.testutil.OC_FOLDER
Expand All @@ -50,10 +52,10 @@ import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module

class ShareFolderFragmentTest {
class OcsShareFolderFragmentTest {
private val capabilityViewModel = mockk<CapabilityViewModel>(relaxed = true)
private val capabilitiesLiveData = MutableLiveData<Event<UIResult<OCCapability>>>()
private val shareViewModel = mockk<ShareViewModel>(relaxed = true)
private val shareViewModel = mockk<OcsShareViewModel>(relaxed = true)
private val sharesLiveData = MutableLiveData<Event<UIResult<List<OCShare>>>>()

@Before
Expand All @@ -78,7 +80,7 @@ class ShareFolderFragmentTest {
)
}

val shareFileFragment = ShareFileFragment.newInstance(
val shareFileFragment = OcsShareFileFragment.newInstance(
OC_FOLDER.copy(privateLink = null),
OC_ACCOUNT
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ import com.owncloud.android.domain.capabilities.model.CapabilityBooleanType
import com.owncloud.android.domain.capabilities.model.OCCapability
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.shares.PublicShareDialogFragment
import com.owncloud.android.presentation.sharing.shares.PublicOcsShareDialogFragment
import com.owncloud.android.presentation.capabilities.CapabilityViewModel
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.testutil.OC_ACCOUNT
import com.owncloud.android.testutil.OC_CAPABILITY
import com.owncloud.android.testutil.OC_FILE
Expand All @@ -62,10 +62,10 @@ import org.koin.dsl.module
import java.text.SimpleDateFormat
import java.util.Date

class PublicShareCreationDialogFragmentTest {
class PublicOcsShareCreationDialogFragmentTest {
private val capabilityViewModel = mockk<CapabilityViewModel>(relaxed = true)
private val capabilitiesLiveData = MutableLiveData<Event<UIResult<OCCapability>>>()
private val shareViewModel = mockk<ShareViewModel>(relaxed = true)
private val shareViewModel = mockk<OcsShareViewModel>(relaxed = true)
private val publicShareCreationStatus = MutableLiveData<Event<UIResult<Unit>>>()

@Before
Expand Down Expand Up @@ -476,7 +476,7 @@ class PublicShareCreationDialogFragmentTest {
) {
val file = if (isFolder) OC_FOLDER else OC_FILE

val publicShareDialogFragment = PublicShareDialogFragment.newInstanceToCreate(
val publicShareDialogFragment = PublicOcsShareDialogFragment.newInstanceToCreate(
file,
OC_ACCOUNT,
"DOC_12112018.jpg link"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ import com.owncloud.android.domain.sharing.shares.model.ShareType
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.lib.resources.shares.RemoteShare
import com.owncloud.android.presentation.common.UIResult
import com.owncloud.android.presentation.sharing.shares.PublicShareDialogFragment
import com.owncloud.android.presentation.sharing.shares.PublicOcsShareDialogFragment
import com.owncloud.android.presentation.capabilities.CapabilityViewModel
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.testutil.OC_ACCOUNT
import com.owncloud.android.testutil.OC_FILE
import com.owncloud.android.testutil.OC_SHARE
Expand All @@ -57,10 +57,10 @@ import java.text.SimpleDateFormat
import java.util.GregorianCalendar
import java.util.TimeZone

class PublicShareEditionDialogFragmentTest {
class PublicOcsShareEditionDialogFragmentTest {
private val capabilityViewModel = mockk<CapabilityViewModel>(relaxed = true)
private val capabilitiesLiveData = MutableLiveData<Event<UIResult<OCCapability>>>()
private val shareViewModel = mockk<ShareViewModel>(relaxed = true)
private val shareViewModel = mockk<OcsShareViewModel>(relaxed = true)

private val expirationDate = 1556575200000 // GMT: Monday, April 29, 2019 10:00:00 PM

Expand All @@ -85,7 +85,7 @@ class PublicShareEditionDialogFragmentTest {
)
}

val publicShareDialogFragment = PublicShareDialogFragment.newInstanceToUpdate(
val publicShareDialogFragment = PublicOcsShareDialogFragment.newInstanceToUpdate(
OC_FILE,
OC_ACCOUNT,
OC_SHARE.copy(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ import androidx.fragment.app.commit
import com.owncloud.android.R
import com.owncloud.android.domain.files.model.OCFile
import com.owncloud.android.domain.sharing.shares.model.OCShare
import com.owncloud.android.presentation.sharing.ShareFragmentListener
import com.owncloud.android.presentation.sharing.OcsShareFragmentListener
import com.owncloud.android.services.OperationsService
import com.owncloud.android.testing.SingleFragmentActivity
import com.owncloud.android.ui.fragment.FileFragment.ContainerActivity
import com.owncloud.android.ui.helpers.FileOperationsHelper

class TestShareFileActivity : SingleFragmentActivity(), ShareFragmentListener, ContainerActivity {
class TestShareFileActivity : SingleFragmentActivity(), OcsShareFragmentListener, ContainerActivity {
fun startFragment(fragment: Fragment) {
supportFragmentManager.commit(allowStateLoss = true) {
add(R.id.container, fragment, TEST_FRAGMENT_TAG)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,18 +89,18 @@ import com.owncloud.android.domain.members.usecases.RemoveMemberUseCase
import com.owncloud.android.domain.members.usecases.SearchMembersUseCase
import com.owncloud.android.domain.roles.usecases.GetRolesAsyncUseCase
import com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase
import com.owncloud.android.domain.sharing.sharees.GetShareesAsyncUseCase
import com.owncloud.android.domain.sharing.sharees.GetOcsShareesAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.AddGraphShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.CreatePrivateShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.CreatePublicShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.DeleteShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.CreatePrivateOcsShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.CreatePublicOcsShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.DeleteOcsShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.EditGraphShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.EditPrivateShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.EditPublicShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.EditPrivateOcsShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.EditPublicOcsShareAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.GetGraphSharesAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.GetShareAsLiveDataUseCase
import com.owncloud.android.domain.sharing.shares.usecases.GetSharesAsLiveDataUseCase
import com.owncloud.android.domain.sharing.shares.usecases.RefreshSharesFromServerAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.GetOcsShareAsLiveDataUseCase
import com.owncloud.android.domain.sharing.shares.usecases.GetOcsSharesAsLiveDataUseCase
import com.owncloud.android.domain.sharing.shares.usecases.RefreshOcsSharesFromServerAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.RemoveGraphShareAsyncUseCase
import com.owncloud.android.domain.spaces.usecases.CreateSpaceUseCase
import com.owncloud.android.domain.spaces.usecases.DisableSpaceUseCase
Expand Down Expand Up @@ -233,17 +233,17 @@ val useCaseModule = module {

// Sharing
factoryOf(::AddGraphShareAsyncUseCase)
factoryOf(::CreatePrivateShareAsyncUseCase)
factoryOf(::CreatePublicShareAsyncUseCase)
factoryOf(::DeleteShareAsyncUseCase)
factoryOf(::CreatePrivateOcsShareAsyncUseCase)
factoryOf(::CreatePublicOcsShareAsyncUseCase)
factoryOf(::DeleteOcsShareAsyncUseCase)
factoryOf(::EditGraphShareAsyncUseCase)
factoryOf(::EditPrivateShareAsyncUseCase)
factoryOf(::EditPublicShareAsyncUseCase)
factoryOf(::EditPrivateOcsShareAsyncUseCase)
factoryOf(::EditPublicOcsShareAsyncUseCase)
factoryOf(::GetGraphSharesAsyncUseCase)
factoryOf(::GetShareAsLiveDataUseCase)
factoryOf(::GetShareesAsyncUseCase)
factoryOf(::GetSharesAsLiveDataUseCase)
factoryOf(::RefreshSharesFromServerAsyncUseCase)
factoryOf(::GetOcsShareAsLiveDataUseCase)
factoryOf(::GetOcsShareesAsyncUseCase)
factoryOf(::GetOcsSharesAsLiveDataUseCase)
factoryOf(::RefreshOcsSharesFromServerAsyncUseCase)
factoryOf(::RemoveGraphShareAsyncUseCase)

// Spaces
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ import com.owncloud.android.presentation.settings.logging.SettingsLogsViewModel
import com.owncloud.android.presentation.settings.more.SettingsMoreViewModel
import com.owncloud.android.presentation.settings.security.SettingsSecurityViewModel
import com.owncloud.android.presentation.sharing.GraphShareViewModel
import com.owncloud.android.presentation.sharing.ShareViewModel
import com.owncloud.android.presentation.sharing.OcsShareViewModel
import com.owncloud.android.presentation.spaces.SpacesListViewModel
import com.owncloud.android.presentation.spaces.links.SpaceLinksViewModel
import com.owncloud.android.presentation.spaces.members.SpaceMembersViewModel
Expand Down Expand Up @@ -95,7 +95,7 @@ val viewModelModule = module {
viewModel { (accountName: String) -> CapabilityViewModel(accountName, get(), get(), get(), get()) }
viewModel { (action: PasscodeAction) -> PassCodeViewModel(get(), get(), action) }
viewModel { (filePath: String, accountName: String) ->
ShareViewModel(filePath, accountName, get(), get(), get(), get(), get(), get(), get(), get(), get(), get())
OcsShareViewModel(filePath, accountName, get(), get(), get(), get(), get(), get(), get(), get(), get(), get())
}
viewModel { (initialFolderToDisplay: OCFile, fileListOption: FileListOption) ->
MainFileListViewModel(get(), get(), get(), get(), get(), get(), get(), get(), get(), get(), get(), get(), get(), get(), get(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import com.owncloud.android.R
import com.owncloud.android.databinding.AddMemberFragmentBinding
import com.owncloud.android.domain.members.model.OCMember
import com.owncloud.android.domain.members.model.OCMemberType
import com.owncloud.android.presentation.spaces.members.SpaceRolesAdapter
import com.owncloud.android.presentation.roles.RolesAdapter

fun AddMemberFragmentBinding.showOrHideEmptyView(hasMembers: Boolean, searchMinLength: Int) {
membersRecyclerView.isVisible = hasMembers
Expand All @@ -48,9 +48,9 @@ fun AddMemberFragmentBinding.bindSelectedMember(member: OCMember) {
}
}

fun AddMemberFragmentBinding.bindRoles(rolesAdapter: SpaceRolesAdapter, selectedRoleId: String?) {
fun AddMemberFragmentBinding.bindRoles(rolesAdapter: RolesAdapter, selectedRoleId: String?) {
selectedRoleId?.let {
inviteMemberButton.isEnabled = true
confirmActionButton.isEnabled = true
rolesAdapter.setSelectedRole(it)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.presentation.spaces.members
package com.owncloud.android.presentation.members

import android.view.LayoutInflater
import android.view.View
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.presentation.spaces.members
package com.owncloud.android.presentation.members

import androidx.recyclerview.widget.DiffUtil
import com.owncloud.android.domain.members.model.OCMember
Expand Down
Loading
Loading