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
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,31 @@
*/
package com.nextcloud.client

import androidx.test.core.app.launchActivity
import androidx.test.core.app.ActivityScenario
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isRoot
import com.nextcloud.test.GrantStoragePermissionRule.Companion.grant
import com.owncloud.android.AbstractIT
import com.owncloud.android.ui.activity.CommunityActivity
import com.owncloud.android.ui.navigation.NavigatorActivity
import com.owncloud.android.ui.navigation.NavigatorScreen
import com.owncloud.android.utils.ScreenshotTest
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TestRule

class CommunityActivityIT : AbstractIT() {
private val testClassName = "com.nextcloud.client.CommunityActivityIT"
class CommunityFragmentIT : AbstractIT() {
private val testClassName = "com.nextcloud.client.CommunityFragmentIT"

@get:Rule
var storagePermissionRule: TestRule = grant()

@Test
@ScreenshotTest
fun open() {
launchActivity<CommunityActivity>().use { scenario ->
val intent = NavigatorActivity.intent(targetContext, NavigatorScreen.Community)
ActivityScenario.launch<NavigatorActivity>(intent).use { scenario ->
val screenShotName = createName(testClassName + "_" + "open", "")
onView(isRoot()).check(matches(isDisplayed()))

Expand Down
7 changes: 4 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,6 @@
<activity
android:name=".ui.activity.NotificationsActivity"
android:exported="false" />
<activity
android:name=".ui.activity.CommunityActivity"
android:exported="false" />
<activity
android:name=".ui.activities.ActivitiesActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
Expand Down Expand Up @@ -700,6 +697,10 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name=".ui.navigation.NavigatorActivity"
android:exported="false" />
</application>

</manifest>
13 changes: 8 additions & 5 deletions app/src/main/java/com/nextcloud/client/di/ComponentsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import com.owncloud.android.syncadapter.FileSyncService;
import com.owncloud.android.ui.activities.ActivitiesActivity;
import com.owncloud.android.ui.activity.BaseActivity;
import com.owncloud.android.ui.activity.CommunityActivity;
import com.owncloud.android.ui.activity.ConflictsResolveActivity;
import com.owncloud.android.ui.activity.ContactsPreferenceActivity;
import com.owncloud.android.ui.activity.CopyToClipboardActivity;
Expand Down Expand Up @@ -116,8 +115,10 @@
import com.owncloud.android.ui.fragment.OCFileListFragment;
import com.owncloud.android.ui.fragment.SharedListFragment;
import com.owncloud.android.ui.fragment.UnifiedSearchFragment;
import com.owncloud.android.ui.fragment.community.CommunityFragment;
import com.owncloud.android.ui.fragment.contactsbackup.BackupFragment;
import com.owncloud.android.ui.fragment.contactsbackup.BackupListFragment;
import com.owncloud.android.ui.navigation.NavigatorActivity;
import com.owncloud.android.ui.preview.FileDownloadFragment;
import com.owncloud.android.ui.preview.PreviewBitmapActivity;
import com.owncloud.android.ui.preview.PreviewImageActivity;
Expand Down Expand Up @@ -194,9 +195,6 @@ abstract class ComponentsModule {
@ContributesAndroidInjector
abstract NotificationsActivity notificationsActivity();

@ContributesAndroidInjector
abstract CommunityActivity participateActivity();

@ContributesAndroidInjector
abstract ComposeActivity composeActivity();

Expand Down Expand Up @@ -503,7 +501,6 @@ abstract class ComponentsModule {
@ContributesAndroidInjector
abstract InternalTwoWaySyncActivity internalTwoWaySyncActivity();


@OptIn(markerClass = UnstableApi.class)
@ContributesAndroidInjector
abstract BackgroundPlayerService backgroundPlayerService();
Expand All @@ -513,4 +510,10 @@ abstract class ComponentsModule {

@ContributesAndroidInjector
abstract SetStatusMessageBottomSheet setStatusMessageBottomSheet();

@ContributesAndroidInjector
abstract NavigatorActivity navigatorActivity();

@ContributesAndroidInjector
abstract CommunityFragment communityFragment();
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@
import com.owncloud.android.ui.events.SearchEvent;
import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment;
import com.owncloud.android.ui.fragment.OCFileListFragment;
import com.owncloud.android.ui.navigation.NavigatorActivity;
import com.owncloud.android.ui.navigation.NavigatorScreen;
import com.owncloud.android.ui.trashbin.TrashbinActivity;
import com.owncloud.android.utils.BitmapUtils;
import com.owncloud.android.utils.DisplayUtils;
Expand Down Expand Up @@ -622,7 +624,7 @@ private void onNavigationItemClicked(final MenuItem menuItem) {
startActivity(intent);
} else if (itemId == R.id.nav_community) {
resetOnlyPersonalAndOnDevice();
startActivity(CommunityActivity.class);
pushFragment(NavigatorScreen.Community.INSTANCE);
} else if (itemId == R.id.nav_logout) {
resetOnlyPersonalAndOnDevice();
MenuItem isNewMenuItemChecked = menuItem.setChecked(false);
Expand Down Expand Up @@ -661,6 +663,18 @@ private void onNavigationItemClicked(final MenuItem menuItem) {
highlightNavigationViewItem(itemId);
}

/**
* If navigator activity already exists just push else start navigator activity.
*/
private void pushFragment(NavigatorScreen screen) {
if (this instanceof NavigatorActivity navigatorActivity) {
navigatorActivity.push(screen);
} else {
final var intent = NavigatorActivity.Companion.intent(this, screen);
startActivity(intent);
}
}

@SuppressFBWarnings("RV")
private void handleBottomNavigationViewClicks() {
bottomNavigationView.setOnItemSelectedListener(menuItem -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2026 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

package com.owncloud.android.ui.fragment.community

import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.nextcloud.utils.extensions.setHtmlContent
import com.owncloud.android.R
import com.owncloud.android.databinding.FragmentCommunityBinding
import com.owncloud.android.ui.activity.DrawerActivity
import com.owncloud.android.utils.DisplayUtils

class CommunityFragment : Fragment() {

private var _binding: FragmentCommunityBinding? = null
private val binding get() = _binding!!

private val drawerActivity get() = activity as? DrawerActivity

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = FragmentCommunityBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
drawerActivity?.run {
setupToolbar()
updateActionBarTitleAndHomeButtonByString(getString(R.string.drawer_community))
}
binding.communityReleaseCandidateText.movementMethod = LinkMovementMethod.getInstance()
drawerActivity?.let { setupViews(it) }
setOnClickListeners()
}

private fun setupViews(activity: DrawerActivity) {
val primaryColor = activity.viewThemeUtils.files.primaryColorToHexString(requireContext())
val helpLink = getString(R.string.help_link)
val forum = getString(R.string.community_contribute_forum_forum)
val translationLink = getString(R.string.translation_link)
val translate = getString(R.string.community_contribute_translate_translate)
val contributingLink = getString(R.string.contributing_link)

listOf(
binding.communityContributeForumText to
"${getString(R.string.community_contribute_forum_text)} " +
getString(
R.string.community_contribute_forum_text_link,
primaryColor,
helpLink,
forum
),

binding.communityContributeTranslateText to
getString(
R.string.community_contribute_translate_link,
primaryColor,
translationLink,
translate
) + " " + getString(R.string.community_contribute_translate_text),

binding.communityContributeGithubText to
getString(
R.string.community_contribute_github_text,
getString(
R.string.community_contribute_github_text_link,
primaryColor,
contributingLink
)
)
).forEach { (view, content) ->
view.setHtmlContent(content)
}

activity.viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.communityTestingReport)
binding.communityTestingReport.setOnClickListener {
DisplayUtils.startLinkIntent(requireActivity(), R.string.report_issue_empty_link)
}
}

private fun setOnClickListeners() {
val activity = requireActivity()

listOf(
binding.communityBetaFdroid to R.string.fdroid_beta_link,
binding.communityReleaseCandidateFdroid to R.string.fdroid_link,
binding.communityReleaseCandidatePlaystore to R.string.play_store_register_beta,
binding.communityBetaApk to R.string.beta_apk_link
).forEach { (view, linkRes) ->
view.setOnClickListener {
DisplayUtils.startLinkIntent(activity, linkRes)
}
}
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
Loading
Loading