Merge remote-tracking branch 'origin/master' into dev

This commit is contained in:
Tobias Kaminsky 2024-09-12 03:39:57 +02:00
commit ad2f7da891
91 changed files with 227 additions and 228 deletions

View file

@ -34,6 +34,7 @@ jobs:
run: |
echo 'Can not approve PRs from forks'
exit 1
- uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -1,9 +1,8 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.client.jobs
@ -11,6 +10,7 @@ import android.Manifest
import androidx.test.rule.GrantPermissionRule
import androidx.work.WorkManager
import com.nextcloud.client.core.ClockImpl
import com.nextcloud.client.preferences.AppPreferences
import com.nextcloud.client.preferences.AppPreferencesImpl
import com.nextcloud.test.RetryTestRule
import com.owncloud.android.AbstractIT
@ -20,8 +20,9 @@ import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.operations.DownloadFileOperation
import ezvcard.Ezvcard
import ezvcard.VCard
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertTrue
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Assert.fail
import org.junit.Rule
import org.junit.Test
import java.io.BufferedInputStream
@ -29,15 +30,15 @@ import java.io.File
import java.io.FileInputStream
class ContactsBackupIT : AbstractOnServerIT() {
val workmanager = WorkManager.getInstance(targetContext)
val preferences = AppPreferencesImpl.fromContext(targetContext)
private val backgroundJobManager = BackgroundJobManagerImpl(workmanager, ClockImpl(), preferences)
private val workManager = WorkManager.getInstance(targetContext)
private val preferences: AppPreferences = AppPreferencesImpl.fromContext(targetContext)
private val backgroundJobManager = BackgroundJobManagerImpl(workManager, ClockImpl(), preferences)
@get:Rule
val writeContactsRule = GrantPermissionRule.grant(Manifest.permission.WRITE_CONTACTS)
val writeContactsRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_CONTACTS)
@get:Rule
val readContactsRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS)
val readContactsRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS)
@get:Rule
val retryTestRule = RetryTestRule() // flaky test
@ -46,38 +47,54 @@ class ContactsBackupIT : AbstractOnServerIT() {
@Test
fun importExport() {
val intArray = IntArray(1)
intArray[0] = 0
val intArray = intArrayOf(0)
// import file to local contacts
backgroundJobManager.startImmediateContactsImport(null, null, getFile(vcard).absolutePath, intArray)
shortSleep()
longSleep()
// export contact
backgroundJobManager.startImmediateContactsBackup(user)
longSleep()
val backupFolder: String = targetContext.resources.getString(R.string.contacts_backup_folder) +
val folderPath: String = targetContext.resources.getString(R.string.contacts_backup_folder) +
OCFile.PATH_SEPARATOR
refreshFolder("/")
longSleep()
refreshFolder(backupFolder)
longSleep()
val backupOCFile = storageManager.getFolderContent(
storageManager.getFileByDecryptedRemotePath(backupFolder),
false
)[0]
refreshFolder(folderPath)
longSleep()
longSleep()
assertTrue(DownloadFileOperation(user, backupOCFile, AbstractIT.targetContext).execute(client).isSuccess)
if (folderPath.isEmpty()) {
fail("folderPath cannot be empty")
}
val folder = fileDataStorageManager.getFileByDecryptedRemotePath(folderPath)
if (folder == null) {
fail("folder cannot be null")
}
val ocFile = storageManager.getFolderContent(folder, false).firstOrNull()
if (ocFile == null) {
fail("ocFile cannot be null")
}
if (ocFile?.storagePath == null) {
fail("ocFile.storagePath cannot be null")
}
assertTrue(DownloadFileOperation(user, ocFile, AbstractIT.targetContext).execute(client).isSuccess)
val file = ocFile?.storagePath?.let { File(it) }
if (file == null) {
fail("file cannot be null")
}
val backupFile = File(backupOCFile.storagePath)
val vcardInputStream = BufferedInputStream(FileInputStream(getFile(vcard)))
val backupFileInputStream = BufferedInputStream(FileInputStream(backupFile))
val backupFileInputStream = BufferedInputStream(FileInputStream(file))
// verify same
val originalCards: ArrayList<VCard> = ArrayList()
@ -87,6 +104,17 @@ class ContactsBackupIT : AbstractOnServerIT() {
backupCards.addAll(Ezvcard.parse(backupFileInputStream).all())
assertEquals(originalCards.size, backupCards.size)
assertEquals(originalCards[0].formattedName.toString(), backupCards[0].formattedName.toString())
val originalCardFormattedName = originalCards.firstOrNull()?.formattedName
if (originalCardFormattedName == null) {
fail("originalCardFormattedName cannot be null")
}
val backupCardFormattedName = backupCards.firstOrNull()?.formattedName
if (backupCardFormattedName == null) {
fail("backupCardFormattedName cannot be null")
}
assertEquals(originalCardFormattedName.toString(), backupCardFormattedName.toString())
}
}

View file

@ -1,10 +0,0 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.owncloud.android.files.services
class LegacyFileUploaderIT : FileUploaderIT()

View file

@ -63,8 +63,8 @@ public class ConflictsResolveActivityIT extends AbstractIT {
ConflictsResolveActivity sut = activityRule.launchActivity(intent);
ConflictsResolveDialog dialog = ConflictsResolveDialog.newInstance(targetContext,
existingFile,
newFile,
existingFile,
UserAccountManagerImpl
.fromContext(targetContext)
.getUser()

View file

@ -390,6 +390,7 @@ public class DialogFragmentIT extends AbstractIT {
DeviceInfo info = new DeviceInfo();
OCFile ocFile = new OCFile("/test.md");
ocFile.setRemoteId("00000001");
Intent intent = new Intent(targetContext, FileDisplayActivity.class);
FileDisplayActivity fda = activityRule.launchActivity(intent);

View file

@ -35,6 +35,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val sut = testActivityRule.launchActivity(null)
OCFile("/1.png").apply {
remoteId = "00000001"
mimeType = "image/png"
fileLength = 1024000
modificationTimestamp = 1188206955000
@ -43,6 +44,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/image.png").apply {
remoteId = "00000002"
mimeType = "image/png"
isPreviewAvailable = false
fileLength = 3072000
@ -53,6 +55,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/live photo.png").apply {
remoteId = "00000003"
mimeType = "image/png"
isPreviewAvailable = false
fileLength = 3072000
@ -63,6 +66,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/video.mp4").apply {
remoteId = "00000004"
mimeType = "video/mp4"
isPreviewAvailable = false
fileLength = 12092000
@ -96,6 +100,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val fragment = OCFileListFragment()
OCFile("/sharedToUser.jpg").apply {
remoteId = "00000001"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("Admin", "Server Admin", ShareType.USER))
@ -104,6 +109,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToGroup.jpg").apply {
remoteId = "00000002"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("group", "Group", ShareType.GROUP))
@ -112,6 +118,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToEmail.jpg").apply {
remoteId = "00000003"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("admin@nextcloud.localhost", "admin@nextcloud.localhost", ShareType.EMAIL))
@ -120,6 +127,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/publicLink.jpg").apply {
remoteId = "00000004"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedViaLink = true
modificationTimestamp = 1000
@ -127,6 +135,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToFederatedUser.jpg").apply {
remoteId = "00000005"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(
@ -137,6 +146,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToPersonalCircle.jpg").apply {
remoteId = "00000006"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("circle", "Circle (Personal circle)", ShareType.CIRCLE))
@ -170,6 +180,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
// }
OCFile("/sharedToUserRoom.jpg").apply {
remoteId = "00000007"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("Conversation", "Admin", ShareType.ROOM))
@ -178,6 +189,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToGroupRoom.jpg").apply {
remoteId = "00000008"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(ShareeUser("Conversation", "Meeting", ShareType.ROOM))
@ -186,6 +198,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedToUsers.jpg").apply {
remoteId = "00000009"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true
sharees = listOf(
@ -198,6 +211,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/notShared.jpg").apply {
remoteId = "000000010"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
modificationTimestamp = 1000
sut.storageManager.saveFile(this)
@ -232,6 +246,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val fragment = OCFileListFragment()
OCFile("/normal/").apply {
remoteId = "00000001"
mimeType = MimeType.DIRECTORY
modificationTimestamp = 1624003571000
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
@ -239,6 +254,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/sharedViaLink/").apply {
remoteId = "00000002"
mimeType = MimeType.DIRECTORY
isSharedViaLink = true
modificationTimestamp = 1619003571000
@ -247,6 +263,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/share/").apply {
remoteId = "00000003"
mimeType = MimeType.DIRECTORY
isSharedWithSharee = true
modificationTimestamp = 1619303571000
@ -255,6 +272,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/groupFolder/").apply {
remoteId = "00000004"
mimeType = MimeType.DIRECTORY
modificationTimestamp = 1615003571000
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
@ -263,6 +281,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/encrypted/").apply {
remoteId = "00000005"
mimeType = MimeType.DIRECTORY
isEncrypted = true
decryptedRemotePath = "/encrypted/"
@ -272,6 +291,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
}
OCFile("/locked/").apply {
remoteId = "00000006"
mimeType = MimeType.DIRECTORY
isLocked = true
decryptedRemotePath = "/locked/"
@ -310,12 +330,15 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
folder.setFolder()
sut.storageManager.saveFile(folder)
val imageFile = OCFile("/test/image.png")
imageFile.mimeType = "image/png"
imageFile.fileLength = 1024000
imageFile.modificationTimestamp = 1188206955000
imageFile.parentId = sut.storageManager.getFileByEncryptedRemotePath("/test/").fileId
imageFile.storagePath = getFile("java.md").absolutePath
val imageFile = OCFile("/test/image.png").apply {
remoteId = "00000001"
mimeType = "image/png"
fileLength = 1024000
modificationTimestamp = 1188206955000
parentId = sut.storageManager.getFileByEncryptedRemotePath("/test/").fileId
storagePath = getFile("java.md").absolutePath
}
sut.storageManager.saveFile(imageFile)
sut.addFragment(fragment)
@ -334,8 +357,11 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val activity = testActivityRule.launchActivity(null)
val sut = OCFileListFragment()
val folder = OCFile("/test/")
folder.setFolder()
val folder = OCFile("/test/").apply {
remoteId = "000001"
setFolder()
}
activity.storageManager.saveFile(folder)
activity.addFragment(sut)
@ -357,7 +383,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
testFolder.richWorkspace = "1"
activity.storageManager.saveFile(testFolder)
sut.adapter.setCurrentDirectory(testFolder)
sut.adapter.currentDirectory = testFolder
Assert.assertTrue(sut.adapter.shouldShowHeader())
}
}

View file

@ -1,64 +0,0 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.owncloud.android.ui.preview;
import com.owncloud.android.AbstractIT;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.ui.activity.FileDisplayActivity;
import com.owncloud.android.utils.MimeTypeUtil;
import com.owncloud.android.utils.ScreenshotTest;
import org.junit.Rule;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import androidx.test.espresso.intent.rule.IntentsTestRule;
public class PreviewTextFileFragmentTest extends AbstractIT {
@Rule public IntentsTestRule<FileDisplayActivity> activityRule = new IntentsTestRule<>(FileDisplayActivity.class,
true,
false);
@Test
@ScreenshotTest
public void displaySimpleTextFile() throws IOException {
FileDisplayActivity sut = activityRule.launchActivity(null);
shortSleep();
File file = getDummyFile("nonEmpty.txt");
OCFile test = new OCFile("/text.md");
test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
test.setStoragePath(file.getAbsolutePath());
sut.startTextPreview(test, false);
shortSleep();
screenshot(sut);
}
@Test
@ScreenshotTest
public void displayJavaSnippetFile() throws IOException {
FileDisplayActivity sut = activityRule.launchActivity(null);
shortSleep();
File file = getFile("java.md");
OCFile test = new OCFile("/java.md");
test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
test.setStoragePath(file.getAbsolutePath());
sut.startTextPreview(test, false);
shortSleep();
screenshot(sut);
}
}

View file

@ -0,0 +1,89 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.owncloud.android.ui.preview
import androidx.annotation.UiThread
import androidx.test.core.app.launchActivity
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isRoot
import com.owncloud.android.AbstractIT
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.ui.activity.FileDisplayActivity
import com.owncloud.android.utils.EspressoIdlingResource
import com.owncloud.android.utils.MimeTypeUtil
import com.owncloud.android.utils.ScreenshotTest
import org.junit.After
import org.junit.Before
import org.junit.Test
import java.io.IOException
class PreviewTextFileFragmentTest : AbstractIT() {
private val testClassName = "com.owncloud.android.ui.preview.PreviewTextFileFragmentTest"
@Before
fun registerIdlingResource() {
IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
}
@After
fun unregisterIdlingResource() {
IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
}
@Test
@ScreenshotTest
@UiThread
@Throws(IOException::class)
fun displaySimpleTextFile() {
launchActivity<FileDisplayActivity>().use { scenario ->
scenario.onActivity { sut ->
val test = OCFile("/text.md").apply {
mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
storagePath = getDummyFile("nonEmpty.txt").absolutePath
}
onIdleSync {
EspressoIdlingResource.increment()
sut.startTextPreview(test, true)
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "displaySimpleTextFile", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
}
}
@Test
@ScreenshotTest
@UiThread
@Throws(IOException::class)
fun displayJavaSnippetFile() {
launchActivity<FileDisplayActivity>().use { scenario ->
scenario.onActivity { sut ->
val test = OCFile("/java.md").apply {
mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
storagePath = getFile("java.md").absolutePath
}
onIdleSync {
EspressoIdlingResource.increment()
sut.startTextPreview(test, true)
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "displayJavaSnippetFile", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
}
}
}

View file

@ -26,6 +26,7 @@ import com.nextcloud.client.jobs.transfer.TransferManager
import com.owncloud.android.R
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.db.OCUpload
import java.util.Locale
class EtmFileTransferFragment : EtmBaseFragment() {
@ -96,7 +97,7 @@ class EtmFileTransferFragment : EtmBaseFragment() {
vh.state.text = transfer.state.toString()
if (transfer.progress >= 0) {
vh.progressEnabled = true
vh.progress.text = transfer.progress.toString()
vh.progress.text = String.format(Locale.getDefault(), "%d", transfer.progress)
} else {
vh.progressEnabled = false
}

View file

@ -90,28 +90,23 @@ class ConnectivityServiceImpl implements ConnectivityService {
if (cachedValue != null) {
return cachedValue;
} else {
Server server = accountManager.getUser().getServer();
String baseServerAddress = server.getUri().toString();
boolean result;
Connectivity c = getConnectivity();
if (c.isConnected() && c.isWifi() && !c.isMetered()) {
if (c.isConnected() && c.isWifi() && !c.isMetered() && !baseServerAddress.isEmpty()) {
GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE);
PlainClient client = clientFactory.createPlainClient();
Server server = accountManager.getUser().getServer();
String baseServerAddress = server.getUri().toString();
if (baseServerAddress.isEmpty()) {
result = true;
} else {
int status = get.execute(client);
GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE);
PlainClient client = clientFactory.createPlainClient();
int status = get.execute(client);
// Content-Length is not available when using chunked transfer encoding, so check for -1 as well
result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
get.releaseConnection();
if (result) {
Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
" assuming connectivity is impaired");
}
// Content-Length is not available when using chunked transfer encoding, so check for -1 as well
result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
get.releaseConnection();
if (result) {
Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
" assuming connectivity is impaired");
}
} else {
result = !c.isConnected();

View file

@ -777,7 +777,7 @@ public class OCFile implements Parcelable, Comparable<OCFile>, ServerFileInterfa
}
public boolean isRootDirectory() {
return decryptedRemotePath.equals(ROOT_PATH);
return ROOT_PATH.equals(decryptedRemotePath);
}
public boolean isOfflineOperation() {

View file

@ -109,8 +109,6 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
private UploadFilesLayoutBinding binding;
private boolean isWithinEncryptedFolder = false;
@VisibleForTesting
public LocalFileListFragment getFileListFragment() {
return mFileListFragment;
}

View file

@ -151,21 +151,21 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
.setNegativeButton(R.string.common_cancel) { _: DialogInterface?, _: Int ->
listener?.conflictDecisionMade(Decision.CANCEL)
}
.setTitle(data?.folderName)
.setTitle(data?.dialogTitle)
}
private fun okButtonClick() {
binding.run {
val isFolderNameNotExists = (data?.folderName == null)
val isDialogTitleNotExists = (data?.dialogTitle == null)
val decision = when {
leftCheckbox.isChecked && rightCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_BOTH_FOLDER else Decision.KEEP_BOTH
if (isDialogTitleNotExists) Decision.KEEP_BOTH_FOLDER else Decision.KEEP_BOTH
leftCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_OFFLINE_FOLDER else Decision.KEEP_LOCAL
if (isDialogTitleNotExists) Decision.KEEP_OFFLINE_FOLDER else Decision.KEEP_LOCAL
rightCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_SERVER_FOLDER else Decision.KEEP_SERVER
if (isDialogTitleNotExists) Decision.KEEP_SERVER_FOLDER else Decision.KEEP_SERVER
else -> null
}
@ -179,19 +179,12 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
data?.let {
val (leftData, rightData) = it.checkboxData
folderName.visibility = if (it.folderName == null) {
headline.visibility = if (it.headline == null) {
View.GONE
} else {
View.VISIBLE
}
folderName.text = it.folderName
title.visibility = if (it.title == null) {
View.GONE
} else {
View.VISIBLE
}
title.text = it.title
headline.text = it.headline
description.text = it.description
@ -340,8 +333,6 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
rightFile: OCFile,
context: Context
): ConflictDialogData {
val folderName = null
val leftTitle = context.getString(R.string.prefs_synced_folders_local_path_title)
val leftTimestamp =
DisplayUtils.getRelativeTimestamp(context, offlineOperation.createdAt?.times(1000L) ?: 0)
@ -355,21 +346,17 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
val title = context.getString(R.string.conflict_folder_headline)
val description = context.getString(R.string.conflict_message_description_for_folder)
return ConflictDialogData(folderName, title, description, Pair(leftCheckBoxData, rightCheckBoxData))
return ConflictDialogData(null, title, description, Pair(leftCheckBoxData, rightCheckBoxData))
}
@JvmStatic
private fun getFileConflictData(file: File, rightFile: OCFile, context: Context): ConflictDialogData {
val parentFile = File(rightFile.remotePath).parentFile
val folderName = if (parentFile != null) {
String.format(context.getString(R.string.in_folder), parentFile.absolutePath)
} else {
null
}
private fun getFileConflictData(leftFile: File, rightFile: OCFile, context: Context): ConflictDialogData {
// TODO Path needs to be set it correctly for encrypted folders
val title = rightFile.decryptedRemotePath
val leftTitle = context.getString(R.string.conflict_local_file)
val leftTimestamp = DisplayUtils.getRelativeTimestamp(context, file.lastModified())
val leftFileSize = DisplayUtils.bytesToHumanReadable(file.length())
val leftTimestamp = DisplayUtils.getRelativeTimestamp(context, leftFile.lastModified())
val leftFileSize = DisplayUtils.bytesToHumanReadable(leftFile.length())
val leftCheckBoxData = ConflictFileData(leftTitle, leftTimestamp.toString(), leftFileSize)
val rightTitle = context.getString(R.string.conflict_server_file)
@ -377,9 +364,9 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
val rightFileSize = DisplayUtils.bytesToHumanReadable(rightFile.fileLength)
val rightCheckBoxData = ConflictFileData(rightTitle, rightTimestamp.toString(), rightFileSize)
val title = context.getString(R.string.choose_which_file)
val headline = context.getString(R.string.choose_which_file)
val description = context.getString(R.string.conflict_message_description)
return ConflictDialogData(folderName, title, description, Pair(leftCheckBoxData, rightCheckBoxData))
return ConflictDialogData(title, headline, description, Pair(leftCheckBoxData, rightCheckBoxData))
}
}
}

View file

@ -12,8 +12,8 @@ import android.os.Parcelable
import com.nextcloud.utils.extensions.readParcelableCompat
data class ConflictDialogData(
val folderName: String?,
val title: String?,
val dialogTitle: String?,
val headline: String?,
val description: String,
val checkboxData: Pair<ConflictFileData, ConflictFileData>
) : Parcelable {
@ -28,8 +28,8 @@ data class ConflictDialogData(
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(folderName)
parcel.writeString(title)
parcel.writeString(dialogTitle)
parcel.writeString(headline)
parcel.writeString(description)
parcel.writeParcelable(checkboxData.first, flags)
parcel.writeParcelable(checkboxData.second, flags)

View file

@ -212,6 +212,8 @@ public class OCFileListBottomSheetDialog extends BottomSheetDialog implements In
}
private void filterActionsForOfflineOperations() {
if (file == null) return;
if (!file.isOfflineOperation() || file.isRootDirectory()) {
return;
}

View file

@ -17,14 +17,7 @@
android:paddingBottom="@dimen/standard_padding">
<TextView
android:id="@+id/folder_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/in_folder"
android:paddingBottom="@dimen/standard_padding" />
<TextView
android:id="@+id/title"
android:id="@+id/headline"
android:layout_marginTop="@dimen/standard_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s ميغا بكسل</string>
<string name="image_preview_unit_millimetres">%s مللي</string>
<string name="image_preview_unit_seconds">%s ثانية</string>
<string name="in_folder">في مجلد %1$s</string>
<string name="instant_upload_existing">ارفع الملفات الموجودة مسبقاً أيضاً</string>
<string name="instant_upload_on_charging">ارفع وقت الشحن فقط</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -297,7 +297,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na carpeta %1$s</string>
<string name="instant_upload_on_charging">Namái xubir al cargar</string>
<string name="instant_upload_path">/XubidaNelIntre</string>
<string name="invalid_url">La URL ye inválisa</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in folder %1$s</string>
<string name="instant_upload_existing">Also upload existing files</string>
<string name="instant_upload_on_charging">Only upload when charging</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -405,7 +405,6 @@
<string name="icon_for_empty_list">Икона за празен списък</string>
<string name="icon_of_dashboard_widget">Икона на изпълним модул на табло за управление</string>
<string name="icon_of_widget_entry">Икона на вход на изпълним модул</string>
<string name="in_folder">в папка %1$s</string>
<string name="instant_upload_existing">Качете и съществуващи файлове</string>
<string name="instant_upload_on_charging">Качване само при зареждане</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -398,7 +398,6 @@
<string name="icon_for_empty_list">Icona per a la llista buida</string>
<string name="icon_of_dashboard_widget">Icona del giny del tauler</string>
<string name="icon_of_widget_entry">Icona de l\'entrada del giny</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">També pujar fitxers existents</string>
<string name="instant_upload_on_charging">Pujada només durant la càrrega de bateria</string>
<string name="instant_upload_path">/CàrregaInstantània</string>

View file

@ -449,7 +449,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">ve složce %1$s</string>
<string name="instant_upload_existing">Také nahrát už existující soubory</string>
<string name="instant_upload_on_charging">Nahrávat pouze při nabíjení</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -439,7 +439,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mappen %1$s</string>
<string name="instant_upload_existing">Send også eksisterende filer</string>
<string name="instant_upload_on_charging">Upload kun under opladning</string>
<string name="instant_upload_path">/Øjeblikkelig upload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in Ordner %1$s</string>
<string name="instant_upload_existing">Vorhandene Dateien ebenfalls hochladen</string>
<string name="instant_upload_on_charging">Nur während des Ladens der Batterie hochladen</string>
<string name="instant_upload_path">/SofortUpload</string>

View file

@ -411,7 +411,6 @@
<string name="icon_of_widget_entry">Εικονίδιο κενού γραφικού στοιχείου</string>
<string name="image_editor_flip_horizontal">Οριζόντια περιστροφή</string>
<string name="image_editor_flip_vertical">Κάθετη περιστροφή</string>
<string name="in_folder">Στον φάκελο %1$s</string>
<string name="instant_upload_existing">Μεταφόρτωση, επίσης, υπαρχόντων αρχείων</string>
<string name="instant_upload_on_charging">Μεταφόρτωση μόνο κατά τη διάρκεια φόρτισης</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -469,7 +469,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">Cargue también archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/SubidasInstantáneas</string>

View file

@ -412,7 +412,6 @@
<string name="image_editor_rotate_ccw">Girar en sentido antihorario</string>
<string name="image_editor_rotate_cw">Girar en sentido horario</string>
<string name="image_editor_unable_to_edit_image">No se puede editar la imagen.</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">También cargar archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/Cargas Automáticas</string>

View file

@ -469,7 +469,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">Cargar también archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/Cargas Automáticas</string>

View file

@ -466,7 +466,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en carpeta %1$s</string>
<string name="instant_upload_existing">Subir también archivos existentes</string>
<string name="instant_upload_on_charging">Subir solo al cargar batería</string>
<string name="instant_upload_path">/SubidaInstantánea</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$skarpetan</string>
<string name="instant_upload_existing">Existitzen diren fitxategiak ere igo</string>
<string name="instant_upload_on_charging">Igo bakarrik gailua kargatzean</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -442,7 +442,6 @@
<string name="image_preview_unit_megapixel">%s مگاپیکسل</string>
<string name="image_preview_unit_millimetres">%s میلی‌متر</string>
<string name="image_preview_unit_seconds">%s ثانیه</string>
<string name="in_folder">در پوشه %1$s</string>
<string name="instant_upload_existing">فایل های موجود را نیز بارگذاری کنید</string>
<string name="instant_upload_on_charging">فقط هنگامی که گوشی شارژ می شود آپلود کنید</string>
<string name="instant_upload_path">آپلود فوری</string>

View file

@ -415,7 +415,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">kansiossa %1$s</string>
<string name="instant_upload_existing">Siirrä myös olemassaolevat tiedostot palvelimelle</string>
<string name="instant_upload_on_charging">Lähetä vain ladattaessa virtaa</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -482,7 +482,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">dans le dossier %1$s</string>
<string name="instant_upload_existing">Téléverser aussi les fichiers existants</string>
<string name="instant_upload_on_charging">Téléverser uniquement lors de la recharge</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i bhfillteán %1$s</string>
<string name="instant_upload_existing">Uaslódáil comhaid atá ann cheana féin freisin</string>
<string name="instant_upload_on_charging">Íoslódáil ach amháin nuair a mhuirearú</string>
<string name="instant_upload_path">/Uaslódáil Meandaracha</string>

View file

@ -344,7 +344,6 @@
<string name="hint_password">Facal-faire</string>
<string name="host_not_available">Chan eil am frithealaiche ri làimh</string>
<string name="host_your_own_server">Òstaich am frithealaiche agad fhèin</string>
<string name="in_folder">sa phasgan %1$s</string>
<string name="instant_upload_existing">Luchdaich suas na faidhlichean a tha ann mu thràth cuideachd</string>
<string name="instant_upload_on_charging">Na luchdaich suas ach nuair a bhios an t-uidheam ga theàirrdseadh</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">no cartafol %1$s</string>
<string name="instant_upload_existing">Envíar tamén os ficheiros existentes</string>
<string name="instant_upload_on_charging">Enviar só cando estea cargando</string>
<string name="instant_upload_path">/EnvíoInstantáneo</string>

View file

@ -382,7 +382,6 @@
<string name="hint_password">Zaporka</string>
<string name="host_not_available">Poslužitelj nije dostupan</string>
<string name="host_your_own_server">Postavi vlastiti poslužitelj</string>
<string name="in_folder">u mapi %1$s</string>
<string name="instant_upload_existing">Također otpremi postojeće datoteke</string>
<string name="instant_upload_on_charging">Otpremanje samo tijekom punjenja</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -429,7 +429,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$s mappában</string>
<string name="instant_upload_existing">A meglévő fájlokat is töltse fel</string>
<string name="instant_upload_on_charging">Feltöltés csak töltés közben</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -430,7 +430,6 @@ Otomatis unggah hanya bekerja dengan baik apabila Anda mengeluarkan aplikasi ini
<string name="image_editor_unable_to_edit_image">Tidak dapat mengedit gambar.</string>
<string name="image_preview_filedetails">Detail berkas</string>
<string name="image_preview_image_taking_conditions">Kondisi pengambilan gambar</string>
<string name="in_folder">di folder %1$s</string>
<string name="instant_upload_existing">Juga unggah berkas yang ada</string>
<string name="instant_upload_on_charging">Hanya unggah ketika dicas</string>
<string name="instant_upload_path">/UnggahInstan</string>

View file

@ -415,7 +415,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">í möppunni %1$s</string>
<string name="instant_upload_existing">Senda líka inn fyrirliggjandi skrár</string>
<string name="instant_upload_on_charging">Einungis senda inn þegar verið er að hlaða</string>
<string name="instant_upload_path">/BeinInnsending</string>

View file

@ -447,7 +447,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">nella cartella %1$s</string>
<string name="instant_upload_existing">Carica anche i file esistenti</string>
<string name="instant_upload_on_charging">Carica solo durante la ricarica</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -470,7 +470,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s 秒</string>
<string name="in_folder">フォルダー%1$sの中で</string>
<string name="instant_upload_existing">既存のファイルもアップロード</string>
<string name="instant_upload_on_charging">充電中のみアップロード</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -424,7 +424,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in folder %1$s</string>
<string name="instant_upload_existing">Also upload existing files</string>
<string name="instant_upload_on_charging">Only upload when charging</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -480,7 +480,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s초</string>
<string name="in_folder">%1$s 폴더 안에</string>
<string name="instant_upload_existing">이미 존재하는 파일도 올리기</string>
<string name="instant_upload_on_charging">충전 중에만 업로드</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -347,7 +347,6 @@
<string name="hint_password">ລະຫັດຜ່ານ</string>
<string name="host_not_available">ເຊີເວີບໍ່ວ່າງ</string>
<string name="host_your_own_server">ເຊີເວີຂອງທ່ານເອງ</string>
<string name="in_folder">ໃນໂຟນເດີ %1$s</string>
<string name="instant_upload_existing">ອັບໂຫຼດຟາຍທີ່ມີຢູ່ແລ້ວ</string>
<string name="instant_upload_on_charging">ພຽງແຕ່ອັບໂຫຼດເທົ່ານັ້ນ</string>
<string name="instant_upload_path">/ອັບໂຫຼດທັນທີ</string>

View file

@ -376,7 +376,6 @@
<string name="hint_password">Slaptažodis</string>
<string name="host_not_available">Serveris neprieinamas</string>
<string name="host_your_own_server">Administruoti savo serverį</string>
<string name="in_folder">aplanke %1$s</string>
<string name="instant_upload_existing">Taip pat įkelkite esamus failus</string>
<string name="instant_upload_on_charging">Įkelti failus tik kai kraunasi</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -358,7 +358,6 @@
<string name="hint_password">Лозинка</string>
<string name="host_not_available">Серверот не е достапен</string>
<string name="host_your_own_server">Хостирајте го вашиот сервер</string>
<string name="in_folder">во папката %1$s</string>
<string name="instant_upload_existing">Прикачување на постоечките датотеки</string>
<string name="instant_upload_on_charging">Прикачувај само додека се полни</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -483,7 +483,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mappen %1$s</string>
<string name="instant_upload_existing">Last også opp eksisterende filer</string>
<string name="instant_upload_on_charging">Bare last opp under lading</string>
<string name="instant_upload_path">/Direkteopplasting</string>

View file

@ -470,7 +470,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in map %1$s</string>
<string name="instant_upload_existing">Upload ook bestaande bestanden</string>
<string name="instant_upload_on_charging">Alleen uploaden bij opladen</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -464,7 +464,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">w katalogu %1$s</string>
<string name="instant_upload_existing">Wyślij również istniejące pliki</string>
<string name="instant_upload_on_charging">Wysyłaj tylko podczas ładowania</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -483,7 +483,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na pasta %1$s</string>
<string name="instant_upload_existing">Enviar arquivos existentes também</string>
<string name="instant_upload_on_charging">Só enviar quando carregando</string>
<string name="instant_upload_path">/EnvioAutomático</string>

View file

@ -410,7 +410,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na pasta %1$s</string>
<string name="instant_upload_existing">Também envia ficheiros existentes</string>
<string name="instant_upload_on_charging">Carregar ficheiros apenas quando o carregador está ligado</string>
<string name="instant_upload_path">/Envio Instantâneo </string>

View file

@ -434,7 +434,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">în folderul %1$s</string>
<string name="instant_upload_existing">De asemenea încarcă fisiere existente</string>
<string name="instant_upload_on_charging">Se încarcă numai în timpul alimentării cu curent</string>
<string name="instant_upload_path">/Încărcare instantă</string>

View file

@ -486,7 +486,6 @@
<string name="image_preview_unit_megapixel">%s МПкс</string>
<string name="image_preview_unit_millimetres">%s мм</string>
<string name="image_preview_unit_seconds">%s с</string>
<string name="in_folder">в папку %1$s</string>
<string name="instant_upload_existing">Также загрузить существующие файлы</string>
<string name="instant_upload_on_charging">Только во время зарядки</string>
<string name="instant_upload_path">/Автозагрузка</string>

View file

@ -362,7 +362,6 @@
<string name="hint_password">Crae</string>
<string name="host_not_available">Su serbidore no est a disponimentu</string>
<string name="host_your_own_server">Retzi su serbidore tuo</string>
<string name="in_folder">in sa cartella %1$s</string>
<string name="instant_upload_existing">Càrriga puru is documentos chi esistint giai</string>
<string name="instant_upload_on_charging">Càrriga isceti cando est carrighende sa bateria</string>
<string name="instant_upload_path">/Carrigamentu istantàneu</string>

View file

@ -463,7 +463,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">v priečinku %1$s</string>
<string name="instant_upload_existing">Nahrať aj existujúce súbory</string>
<string name="instant_upload_on_charging">Nahrať iba počas nabíjania</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -13,6 +13,7 @@
<string name="action_send_share">Pošlji/Omogoči souporabo</string>
<string name="action_switch_grid_view">Mrežni pogled</string>
<string name="action_switch_list_view">Seznamski pogled</string>
<string name="actionbar_calendar_contacts_restore">Obnovi stike in koledar</string>
<string name="actionbar_mkdir">Nova mapa</string>
<string name="actionbar_move_or_copy">Premakni ali Kopiraj</string>
<string name="actionbar_open_with">Odpri s programom</string>
@ -83,6 +84,7 @@
<string name="avatar">Avatar</string>
<string name="away">Ne spremljam</string>
<string name="backup_settings">Nastavitve varnostnega kopiranja</string>
<string name="backup_title">Varnostna kopija koledarja in stikov</string>
<string name="battery_optimization_close">Zapri</string>
<string name="battery_optimization_disable">Onemogoči</string>
<string name="battery_optimization_message">Naprava ima najverjetneje omogočeno možnost optimizacije porabe baterije. Program AutoUpload pravilno deluje le, če je izvzet iz nje.</string>
@ -425,7 +427,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">v mapi %1$s</string>
<string name="instant_upload_existing">Pošlji tudi obstoječe datoteke</string>
<string name="instant_upload_on_charging">Usklajuj le med polnjenjem naprave</string>
<string name="instant_upload_path">/Hipno nalaganje</string>
@ -665,6 +666,7 @@
<string name="screenshot_04_accounts_heading">Vsi vaši računi</string>
<string name="screenshot_04_accounts_subline">na enem mestu</string>
<string name="screenshot_05_autoUpload_heading">Samodejno pošiljanje</string>
<string name="screenshot_06_davdroid_heading">Koledar in stiki</string>
<string name="screenshot_06_davdroid_subline">Uskladi z DAVx5</string>
<string name="search_error">Napaka pridobivanja zadetkov iskanja</string>
<string name="select_all">Izberi vse</string>

View file

@ -471,7 +471,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">У фолдеру %1$s</string>
<string name="instant_upload_existing">Отпреми и постојеће фајлове</string>
<string name="instant_upload_on_charging">Отпремај само на пуњењу</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -34,6 +34,7 @@
<string name="add_to_cloud">Lägg till %1$s</string>
<string name="advanced_settings">Avancerade inställningar</string>
<string name="allow_resharing">Tillåt dela vidare</string>
<string name="app_config_base_url_title">Bas-URL</string>
<string name="app_config_proxy_host_title">Proxy-värdnamn</string>
<string name="app_config_proxy_port_title">Proxyport</string>
<string name="app_widget_description">Visa en widget från dashboard</string>
@ -484,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mapp %1$s</string>
<string name="instant_upload_existing">Ladda även upp befintliga filer</string>
<string name="instant_upload_on_charging">Ladda enbart upp när enheten laddas</string>
<string name="instant_upload_path">/AutomatiskUppladdning</string>

View file

@ -361,7 +361,6 @@
<string name="image_editor_rotate_ccw">หมุนทวนเข็มนาฬิกา</string>
<string name="image_editor_rotate_cw">หมุนตามเข็มนาฬิกา</string>
<string name="image_editor_unable_to_edit_image">ไม่สามารถแก้ไขรูปภาพ</string>
<string name="in_folder">ในโฟลเดอร์ %1$s</string>
<string name="instant_upload_existing">อัปโหลดไฟล์ที่มีอยู่เดิมด้วย</string>
<string name="instant_upload_on_charging">อัปโหลดขณะชาร์จเท่านั้น</string>
<string name="instant_upload_path">/อัพโหลดทันที</string>

View file

@ -338,7 +338,6 @@
<string name="hint_password">Açarsöz</string>
<string name="host_not_available">Serwer elýeterli däl</string>
<string name="host_your_own_server">Öz serweriňizi ýerleşdiriň</string>
<string name="in_folder">%1$s bukjada</string>
<string name="instant_upload_existing">Bar bolan faýllary hem ýükläň</string>
<string name="instant_upload_on_charging">Diňe zarýad berlende ýükläň</string>
<string name="instant_upload_path">/ Çaltýüklemek</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$s klasöründe</string>
<string name="instant_upload_existing">Var olan dosyalar da yüklensin</string>
<string name="instant_upload_on_charging">Yalnızca şarj edilirken yüklensin</string>
<string name="instant_upload_path">/AnındaYükle</string>

View file

@ -476,7 +476,6 @@
<string name="image_preview_image_taking_conditions">Умови отримання зображення</string>
<string name="image_preview_unit_millimetres">%s мм</string>
<string name="image_preview_unit_seconds">%s с</string>
<string name="in_folder">в каталозі %1$s</string>
<string name="instant_upload_existing">Також завантажити існуючі файли</string>
<string name="instant_upload_on_charging">Завантаження тільки під час заряджання</string>
<string name="internal_two_way_sync">Внутрішня двостороння синхронізація</string>

View file

@ -387,7 +387,6 @@
<string name="hint_password">Mật khẩu</string>
<string name="host_not_available">Máy chủ không khả dụng</string>
<string name="host_your_own_server">Host máy chủ của riêng bạn</string>
<string name="in_folder">trong thư mục %1$s</string>
<string name="instant_upload_existing">Cũng tải lên các tệp hiện có</string>
<string name="instant_upload_on_charging">Chỉ tải lên khi đang sạc pin</string>
<string name="instant_upload_path">/Upload tức thì</string>

View file

@ -9,7 +9,7 @@
<string name="account_not_found">找不到账号!</string>
<string name="action_edit">编辑</string>
<string name="action_empty_notifications">清除所有通知</string>
<string name="action_empty_trashbin">清空垃圾箱</string>
<string name="action_empty_trashbin">清空回收站</string>
<string name="action_send_share">共享</string>
<string name="action_switch_grid_view">网格视图</string>
<string name="action_switch_list_view">列表视图</string>
@ -459,7 +459,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在文件夹 %1$s 内 </string>
<string name="instant_upload_existing">同时上传现有文件</string>
<string name="instant_upload_on_charging">仅在充电时上传</string>
<string name="instant_upload_path">/实时上传</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在資料夾 %1$s</string>
<string name="instant_upload_existing">一併上傳存在的檔案</string>
<string name="instant_upload_on_charging">只在充電時上傳</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在資料夾 %1$s</string>
<string name="instant_upload_existing">同時上傳既有的檔案</string>
<string name="instant_upload_on_charging">只在充電時上傳</string>
<string name="instant_upload_path">/InstantUpload</string>

View file

@ -1075,7 +1075,6 @@
<string name="drawer_item_gallery">Media</string>
<string name="player_stop">stop</string>
<string name="player_toggle">toggle</string>
<string name="in_folder">in folder %1$s</string>
<string name="choose_which_file">Choose which file to keep!</string>
<string name="wrong_storage_path">Data storage folder does not exist!</string>
<string name="wrong_storage_path_desc">This might be due to a backup restore on another device. Falling back to default. Please check settings to adjust data storage folder.</string>

View file

@ -293,7 +293,7 @@ class ConnectivityServiceTest {
}
@Test
fun `check request is not sent when server uri is not set`() {
fun `check cache value when server uri is not set`() {
// GIVEN
// network connectivity is present
// user has no server URI (empty)
@ -307,7 +307,7 @@ class ConnectivityServiceTest {
// THEN
// connection is walled
// request is not sent
assertTrue("Server should not be accessible", result)
assertFalse("Cached value not set", result)
verify(requestBuilder, never()).invoke(any())
verify(getRequest, never()).execute(any<PlainClient>())
}

View file

@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE
<span class="mdl-layout-title">Lint Report: 3 errors and 61 warnings</span>
<span class="mdl-layout-title">Lint Report: 3 errors and 59 warnings</span>