Giter VIP home page Giter VIP logo

nextcloud / android Goto Github PK

View Code? Open in Web Editor NEW
3.9K 182.0 1.7K 465.65 MB

πŸ“± Nextcloud Android app

Home Page: https://play.google.com/store/apps/details?id=com.nextcloud.client

License: GNU General Public License v2.0

Java 60.93% Makefile 0.11% Python 0.33% Batchfile 0.10% Shell 0.76% Ruby 0.42% Kotlin 37.31% Dockerfile 0.01% AIDL 0.02%
nextcloud android mobile-app mobile java opensource open-source hacktoberfest kotlin

android's Introduction

Nextcloud Android app πŸ“±

REUSE status Build Status Codacy Badge Releases

Download from Google Play Get it on F-Droid

The Android client for Nextcloud. Easily work with your data on your Nextcloud.

App screenshots

Getting help ⛑️

Note: The section Known Problems / FAQs below may already document your situation.

If you need assistance or want to ask a question about the Android app, you are welcome to ask for support in the Nextcloud Help Forum. If you have found a probable bug or have an enhancement idea, feel free to open a new Issue on GitHub.

If you're not sure if something is a bug or a configuration matter (with your client, server, proxy, etc.), the Nextcloud Help Forum is probably the best place to start so that you can get feedback (you can always return here, after getting feedback there, to report a suspected bug).

Keep in mind, that this repository only manages the Android app. If you find bugs or have problems with the server/backend, you should use the Nextcloud Help Forum to ask for help or report the bug to the Nextcloud server team!

How to contribute πŸš€

If you want to contribute to the Nextcloud Android client app, there are many ways to help whether or not you are a coder:

  • helping out other users on our forum at https://help.nextcloud.com
  • providing translations of the app on Transifex
  • reporting problems / suggesting enhancements by opening new issues
  • implementing proposed bug fixes and enhancement ideas by submitting PRs (associated with a corresponding issue preferably)
  • reviewing pull requests and providing feedback on code, implementation, and functionality
  • installing and testing pull request builds, daily/dev builds, or RCs/release candidate builds
  • enhancing Admin, User, or Developer documentation
  • hitting hard on the latest stable release by testing fundamental features and evaluating the user experience
  • proactively getting familiar with how to gather debug logs from your devices (so that you are prepared to provide a detailed report if you encounter a problem with the app in the future)

Contribution Guidelines & License πŸ“œ

GPLv2. All contributions to this repository from June, 16 2016 on are considered to be licensed under the AGPLv3 or any later version.

Nextcloud doesn't require a CLA (Contributor License Agreement). The copyright belongs to all the individual contributors. Therefore we recommend that every contributor adds following line to the header of a file, if they changed it substantially:

SPDX-FileCopyrightText: <year> <your name> <your email address>

Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.

Please review the guidelines for contributing to this repository.

More information on how to contribute: https://nextcloud.com/contribute/

Start contributing πŸ› οΈ

Make sure you read SETUP.md and CONTRIBUTING.md before you start working on this project. But basically: fork this repository and contribute back using pull requests to the master branch. Easy starting points are also reviewing pull requests and working on starter issues.

Logs

Getting debug info via logcat πŸ”

With a linux computer:

  • enable USB-Debugging in your smartphones developer settings and connect it via USB
  • open command prompt/terminal
  • enter adb logcat --pid=$(adb shell pidof -s 'com.nextcloud.client') > logcatOutput.txt to save the output to this file

Note: You must have adb installed first!

On Windows:

  • download and install Minimal ADB and fastboot
  • enable USB-Debugging in your smartphones developer settings and connect it via USB
  • launch Minimal ADB and fastboot
  • enter adb shell pidof -s 'com.nextcloud.client' and use the output as <processID> in the following command:
  • adb logcat --pid=<processID> > "%USERPROFILE%\Downloads\logcatOutput.txt" (This will produce a logcatOutput.txt file in your downloads)
  • if the processID is 18841, an example command is: adb logcat --pid=18841 > "%USERPROFILE%\Downloads\logcatOutput.txt" (You might cancel the process after a while manually: it will not be exited automatically.)
  • For a PowerShell terminal, replace %USERPROFILE% with $env:USERPROFILE in the commands above.

On a device (with root) πŸ”§

  • open terminal app (can be enabled in developer options)
  • get root access via "su"
  • enter logcat -d --pid $(pidof -s com.nextcloud.client) -f /sdcard/logcatOutput.txt

or

Note: Your device needs to be rooted for this approach!

Development version πŸ”¨

Known Problems and FAQs

Push notifications do not work on F-Droid editions

Push Notifications are not currently supported in the F-Droid builds due to dependencies on Google Play services.

Remarks πŸ“œ

Google Play and the Google Play logo are trademarks of Google Inc.

android's People

Contributors

aleister09 avatar alperozturk96 avatar alvarobrey avatar andyscherzinger avatar ardevd avatar david-development avatar davigonz avatar davivel avatar deepdiver1975 avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar divayprakash avatar ezaquarii avatar jabarros avatar jmue avatar jonasmayerdev avatar jorisbodin avatar malkomich avatar mario avatar nextcloud-bot avatar parneet-guraya avatar przybylski avatar renovate[bot] avatar sirambd avatar stefan-niedermann avatar stoyicker avatar surinder-tsys avatar tobiaskaminsky avatar zetatom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android's Issues

IndexOutOfBounds (reason unknown) via Play Store Console

App Version 1.0.0

Android version
Android 6.01
Device
Xperia Z5 Compact (E5823) 1

One of my folders kill the nextcloud app. This also happend on owncloud.

**java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1**
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    at java.util.ArrayList.get(ArrayList.java:308)
    at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
    at android.widget.AbsListView.onInitializeAccessibilityNodeInfoForItem(AbsListView.java:2478)
    at android.widget.ListView.onInitializeAccessibilityNodeInfoForItem(ListView.java:3946)
    at android.widget.AbsListView$ListItemAccessibilityDelegate.onInitializeAccessibilityNodeInfo(AbsListView.java:2409)
    at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6151)
    at android.view.View.createAccessibilityNodeInfoInternal(View.java:6112)
    at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:22359)
    at android.view.View.createAccessibilityNodeInfo(View.java:6095)
    at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
    at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
    at android.view.View.onInitializeAccessibilityEventInternal(View.java:6049)
    at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:22271)
    at android.view.View.onInitializeAccessibilityEvent(View.java:6035)
    at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5902)
    at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:22210)
    at android.view.View.sendAccessibilityEventUnchecked(View.java:5885)
    at android.view.View.sendAccessibilityEventInternal(View.java:5864)
    at android.view.View$AccessibilityDelegate.sendAccessibilityEvent(View.java:22168)
    at android.view.View.sendAccessibilityEvent(View.java:5829)
    at android.widget.AdapterView.performItemClick(AdapterView.java:317)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
    at android.widget.AbsListView$3.run(AbsListView.java:3879)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:224)
    at android.app.ActivityThread.main(ActivityThread.java:5514)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Add contacts and calendar support to mobile

The problem: I need three diffrent apps to sync all my data

owncloud, CalDav Sync Adapter and DAVDroid.

DAVdroid has the problem is you need two accounts, one for calendar, the other for contacts. It also chokes on my calendar.(a little large). It also needs a long not-obvious string that is mentioned nowhere in documentation except third party sites.

So, I would like calender and contact support in the official app, so one account will sync everything. Also makes it somewhat easier for novices.(non-technical friends/customers/employees), who merely use someone elses owncloud install.

Two character password in Google Play screenshot

Actual behaviour

  • In Google Play, the first screenshot of Nextcloud client shows a user 'hans' with a password of only two characters, as represented by 'β€’β€’'.

Expected behaviour

  • Nextcloud should never encourage users to set short passwords for their accounts, even implicitly. I suggest the example password in the screenshot to be at least 10 characters, like 'β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’' or longer.

Steps to reproduce

  1. Go to Google Play page for Nextcloud client, here: https://play.google.com/store/apps/details?id=com.nextcloud.client
  2. Click on the first screenshot of the app, this one: https://goo.gl/LW70E4
  3. Look at the password field in the screenshot, it is 'β€’β€’'.

Environment data

Nextcloud app version:
1.0.0

Link to a list of Nextcloud providers on the setup screen

I bet many new users are unfamiliar to the concept of ownCloud/Nextcloud requiring URL/user/pass and not just user/pass.

To improve usability, I suggest that we put a link next to the server address box in the setup screen, saying: "Looking for a server? Get it here." And we link it to "https://nextcloud.com/providers/" or the equivalent Nextcloud page when it is ready.

Apart from making it usable for Dropbox-minded users, this has the extra benefit of pointing more customers to the own/Next-cloud providers in that list, and this in turn increase the licensing fees Nextcloud can negotiate to get from the said providers.

PR: #561

Fast scroll list view

Enable a handler that allows fast scrolling to easily scroll to the bottom, e.g. when navigate to the oldest file.

Bug:

  • fast scroll vanishes after switching to subfolder

Release 1.1.0

Fixed layout on Chromebook

Actual behaviour

  • The app utilises a "portrait" view on the app installed on an Asus Chromebook Flip, leaving the rest of the window blank.

Expected behaviour

  • The app should make use of all available space

Environment data

Android version:
6.0
Device model:
Asus Chromebook flip (Android framework runs within a container)
Stock or customized system:
... both?
Nextcloud app version: 1.0

Nextcloud server version: 9.0

screenshot 2016-06-19 at 21 55 07

Automated testing

To improve the quality of our app we should introduce automated testing.
@przybylski you said on IRC that you have experience with this?
What can you recommend?
ownCloud started with appium

Server based theming capabilities

Will the nextcloud app eventually be able to visually look like the mobile web browser version? This way it can be themed just like our own installs are. Or Will its always have it's own design and look?

Crash on sharing to app

Version: 20160617 from fdroid
When sending a file from the file manager to nextcloud I get the following error:

************ CAUSE OF ERROR ************

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nextcloud.android.beta/com.owncloud.android.ui.activity.ReceiveExternalFilesActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5461)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:134)
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
    at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:198)
    at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99)
    at com.owncloud.android.ui.activity.ToolbarActivity.setupToolbar(ToolbarActivity.java:52)
    at com.owncloud.android.ui.activity.ReceiveExternalFilesActivity.populateDirectoryList(ReceiveExternalFilesActivity.java:384)
    at com.owncloud.android.ui.activity.ReceiveExternalFilesActivity.onAccountSet(ReceiveExternalFilesActivity.java:201)
    at com.owncloud.android.ui.activity.BaseActivity.onStart(BaseActivity.java:189)
    at com.owncloud.android.ui.activity.FileActivity.onStart(FileActivity.java:177)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1238)
    at android.app.Activity.performStart(Activity.java:6268)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
    ... 10 more

************ DEVICE INFORMATION ***********
Brand: motorola
Device: condor_umts
Model: Moto E
Id: MOB30J
Product: cm_condor

************ FIRMWARE ************
SDK: 23
Release: 6.0.1
Incremental: a804b51831

App crashes regularly (connecting to ownCloud 9.0.2 )

Actual behaviour

App crashes regularly

Expected behaviour

App doesn't crash regularly

Steps to reproduce

Unfortunately, I haven't found a consistent pattern for reproducing the problem yet. The last time it happened I was switching between detail to grid view.

Environment data

Android version:
5.1.1

Device model:
Galaxy Grand Prime

Stock or customized system:

Nextcloud app version:
20160621

Nextcloud server version:
Actually it's interfacing with ownCloud 9.0.2

Logs

************ CAUSE OF ERROR ************

java.lang.IllegalStateException: Cannot add header view to grid -- setAdapter has already been called.
at third_parties.in.srain.cube.GridViewWithHeaderAndFooter.addFooterView(GridViewWithHeaderAndFooter.java:183)
at com.owncloud.android.ui.fragment.ExtendedListFragment.setFooterEnabled(ExtendedListFragment.java:533)
at com.owncloud.android.ui.fragment.ExtendedListFragment.setFooterText(ExtendedListFragment.java:559)
at com.owncloud.android.ui.fragment.OCFileListFragment.updateLayout(OCFileListFragment.java:855)
at com.owncloud.android.ui.fragment.OCFileListFragment.listDirectory(OCFileListFragment.java:830)
at com.owncloud.android.ui.fragment.OCFileListFragment.onBrowseUp(OCFileListFragment.java:541)
at com.owncloud.android.ui.activity.FileDisplayActivity.onBackPressed(FileDisplayActivity.java:857)
at com.owncloud.android.ui.activity.FileDisplayActivity.onOptionsItemSelected(FileDisplayActivity.java:560)
at android.app.Activity.onMenuItemSelected(Activity.java:3137)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:361)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:147)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
at android.support.v7.widget.ToolbarWidgetWrapper$1.onClick(ToolbarWidgetWrapper.java:194)
at android.view.View.performClick(View.java:5254)
at android.view.View$PerformClick.run(View.java:21173)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6838)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

************ DEVICE INFORMATION ***********
Brand: samsung
Device: gprimeltecan
Model: SM-G530W
Id: LMY47X
Product: gprimeltevl

************ FIRMWARE ************
SDK: 22
Release: 5.1.1
Incremental: G530WVLU1AOFB


Resized images: zoom behaviour

Idea to download the full sized image:

  • Zooming a resized image with at least 2x (which can get blurry)
    • show snackbar "automatically download full image on zoom: yes"
    • Clicking "yes" after second time will offer option "always" to prevent showing the question.
  • time out the snackbar the second time by just waiting will show "never download full image" -> "yes".
  • after both show second snackbar without action "default behaviour can be changed in settings"
  • In setting: new entry "click on image downloads ..."
    • full image to storage
    • resized image to cache

Instant upload for the not-currently active account

copied from the forum https://help.nextcloud.com/t/android-app-one-app-instance-for-each-account/605
As far as I understand the request the issue is that instant upload only works for the currently active account:

Hello,
sorry if this is the wrong place to post about the Android app. I've tried to use the mail address
[email protected] (proposed by the app itself) but got the answer "no such user".
So this is my feature wish:

I've two owncloud accounts as a normal user (two
more as admin) and would like to have different instances of the app
each with it's own account assigned. Is that possible? At this time the
automatic photo/video upload works only on the active account. I would
like to assigned it to only one account and have this always active, so every
uploaded photo will be stored under the same account. The other accounts should be
active also at the same time.

Thank you
JΓΌrgen

Looping in @jancborchardt for UX aspects and @przybylski and @tobiasKaminsky for general discussion/approval of the feature request

Development Guide discussion

Hi everybody,

I just created a wiki page for a short development guide which should help new contributors to understand how develop and release new versions of the app.

https://github.com/nextcloud/android/wiki/Development-Guide

It is just a draft. I thought it is easier if we have some stuff written down to kick off the discussion. For now I focused on versioning and the code review process.

Feel free to challenge anything I have written down ;)

cc @jancborchardt @LukasReschke @tobiasKaminsky @przybylski

Feature Request: Add Wifi Only Options

I like the ability to set a particular folder in which I would like Nextcloud to upload photos to, rather than trying to upload to all new folders it detects. But I would also like an option where it will only automatically upload the photos when the phone is in wireless network and doesn't use the data phone network.

Additionally to this I would like to request a feature in which you can have the photos automatically uploaded but not delete them from the server if I delete the photos from my phone.

Filter

  • Filter current files and folders (no subfolders) by typing.
  • Search also in the middle of the name
  • "search" icon next to three-dot menu as it is a very important task so it should be always visible

PR: #152

Synchronizing big folder problem / Download fails due to Doze

Actual behaviour

While synchronizing 34GB of PDFs split in varying sizes
When android locks the screen, some time later a synchronization error occurs

Expected behaviour

synchronization of all files

Steps to reproduce

  1. use Nextcloud app to Synchronize folder
  2. wait till android locks itself
  3. sometime later the error will occur

Environment data

Android version: 6.0.1

Device model: Oneplus Two

Stock or customized system: Stock OxygenOS

Nextcloud app version: 1.0.1

Nextcloud server version: 9.0.5

Logs

Web server error log

 PHP Fatal error:  Uncaught Error: Class 'OCP\Lock\ILockingProvider' not found in /var/www/html/nextcloud/lib/private/files/view.php:1129\nStack trace:\n#0 [internal function]: OC\Files\View->OC\Files\{closure}()\n#1 /var/www/html/nextcloud/3rdparty/icewind/streams/src/CallbackWrapper.php(109): call_user_func(Object(Closure))\n#2 [internal function]: Icewind\Streams\CallbackWrapper->stream_close()\n#3 {main}\n  thrown in /var/www/html/nextcloud/lib/private/files/view.php on line 1129

Nextcloud log (data/nextcloud.log)

{"reqId":"V0jILJKYwueE9Su-ZbfgbgAAAAQ","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:20:28+00:00"}
{"reqId":"V0jIUO3itPpacSu-O54@rAAAAAE","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:21:04+00:00"}
{"reqId":"V0jIURy28ueo4f-A6vlOCAAAAAY","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:21:05+00:00"}
{"reqId":"V0jIUUomMaBSwMQSnqmq4QAAAAI","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:21:05+00:00"}
{"reqId":"V0jIxITPfEMsNLHZffD@hAAAAAc","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:23:00+00:00"}
{"reqId":"V0jIyFzzmAMglKDzKD4aAwAAAAg","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:23:04+00:00"}
{"reqId":"V0jIyNGclq16mLy4OmP9AwAAAAo","remoteAddr":"91.89.175.28","app":"PHP","message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at \/var\/www\/html\/owncloud\/lib\/private\/image.php#515","level":3,"time":"2016-05-27T22:23:04+00:00"}
{"reqId":"V0oq4VzzmAMglKDzKD4aTgAAAAg","remoteAddr":"91.89.175.28","app":"PHP","message":"Uncaught LogicException: Class OCP\Lock\ILockingProvider could not be loaded in \/var\/www\/html\/owncloud\/lib\/private\/files\/view.php:1091\nStack trace:\n#0 [internal function]: spl_autoload('OCP\\Lock\\ILocki...')\n#1 \/var\/www\/html\/owncloud\/lib\/private\/files\/view.php(1091): spl_autoload_call('OCP\\Lock\\ILocki...')\n#2 [internal function]: OC\Files\View->OC\Files\{closure}()\n#3 \/var\/www\/html\/owncloud\/3rdparty\/icewind\/streams\/src\/CallbackWrapper.php(109): call_user_func(Object(Closure))\n#4 [internal function]: Icewind\Streams\CallbackWrapper->stream_close()\n#5 {main}\n  thrown at \/var\/www\/html\/owncloud\/lib\/private\/files\/view.php#1091","level":3,"time":"2016-05-28T23:33:53+00:00"}
{"reqId":"V1W5kKdL5xcj55T-JSM@bwAAAAc","remoteAddr":"134.3.106.30","app":"webdav","message":"Exception: {\"Message\":\"An exception occurred while executing 'INSERT INTO `oc_file_locks` (`key`,`lock`,`ttl`) SELECT ?,?,? FROM `oc_file_locks` WHERE `key` = ? HAVING COUNT(_) = 0' with params [\\"files\\\\/dfbde41fea47c823d82ae317abe77801\\", 1, 1465239456, \\"files\\\\/dfbde41fea47c823d82ae317abe77801\\"]:\n\nSQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'files\\/dfbde41fea47c823d82ae317abe77801' for key 'lock_key_index'\",\"Exception\":\"Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException\",\"Code\":0,\"Trace\":\"#0 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/DBALException.php(116): Doctrine\\DBAL\\Driver\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\DBAL\\Driver\\PDOException))\n#1 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/Connection.php(996): Doctrine\\DBAL\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\DBAL\\Driver\\PDOMySql\\Driver), Object(Doctrine\\DBAL\\Driver\\PDOException), 'INSERT INTO `oc...', Array)\\n#2 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/db\\\/connection.php(205): Doctrine\\\\DBAL\\\\Connection->executeUpdate('INSERT INTO`oc...', Array, Array)\n#3 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/db\\/adapter.php(93): OC\\DB\\Connection->executeUpdate('INSERT INTO `oc...', Array)\n#4 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/db\\/connection.php(243): OC\\DB\\Adapter->insertIfNotExist('_PREFIX_file_lo...', Array, Array)\n#5 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/lock\\/dblockingprovider.php(113): OC\\DB\\Connection->insertIfNotExist('_PREFIX_file_lo...', Array, Array)\n#6 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/lock\\/dblockingprovider.php(158): OC\\Lock\\DBLockingProvider->initLockField('files\\/dfbde41fe...', 1)\n#7 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/common.php(663): OC\\Lock\\DBLockingProvider->acquireLock('files\\/dfbde41fe...', 1)\n#8 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/wrapper\\/wrapper.php(577): OC\\Files\\Storage\\Common->acquireLock('files\\/DSA\\/25. T...', 1, Object(OC\\Lock\\DBLockingProvider))\n#9 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/wrapper\\/wrapper.php(577): OC\\Files\\Storage\\Wrapper\\Wrapper->acquireLock('files\\/DSA\\/25. T...', 1, Object(OC\\Lock\\DBLockingProvider))\n#10 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1849): OC\\Files\\Storage\\Wrapper\\Wrapper->acquireLock('files\\/DSA\\/25. T...', 1, Object(OC\\Lock\\DBLockingProvider))\n#11 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1956): OC\\Files\\View->lockPath('\\/DSA\\/25. Tools', 1)\n#12 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1230): OC\\Files\\View->lockFile('DSA\\/25. Tools\\/h...', 1)\n#13 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1277): OC\\Files\\View->getCacheEntry(Object(OCA\\Files_Trashbin\\Storage), 'files\\/DSA\\/25. T...', 'DSA\\/25. Tools\\/h...')\n#14 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/lib\\/connector\\/sabre\\/objecttree.php(155): OC\\Files\\View->getFileInfo('\\/Administrator\\/...')\n#15 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/lib\\/connector\\/sabre\\/lockplugin.php(58): OCA\\DAV\\Connector\\Sabre\\ObjectTree->getNodeForPath('DSA\\/25. Tools\\/h...')\n#16 [internal function]: OCA\\DAV\\Connector\\Sabre\\LockPlugin->getLock(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#17 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/event\\/lib\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#18 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/dav\\/lib\\/DAV\\/Server.php(446): Sabre\\Event\\EventEmitter->emit('beforeMethod', Array)\n#19 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/dav\\/lib\\/DAV\\/Server.php(248): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#20 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/appinfo\\/v1\\/webdav.php(55): Sabre\\DAV\\Server->exec()\n#21 \\/var\\/www\\/html\\/owncloud\\/remote.php(138): require_once('\\/var\\/www\\/html\\/o...')\n#22 {main}\",\"File\":\"\\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/Driver\\/AbstractMySQLDriver.php\",\"Line\":66,\"User\":\"Administrator\"}","level":4,"time":"2016-06-06T17:57:36+00:00"}
{"reqId":"V1bwpKjwTDwgkR4k9K9HnQAAAAw","remoteAddr":"134.3.106.30","app":"webdav","message":"Exception: {\"Message\":\"An exception occurred while executing 'INSERT INTO `oc_file_locks` (`key`,`lock`,`ttl`) SELECT ?,?,? FROM `oc_file_locks` WHERE `key` = ? HAVING COUNT(_) = 0' with params [\\"files\\\\/ce6ec4f462fbb3c867ed183861e22e28\\", 1, 1465319093, \\"files\\\\/ce6ec4f462fbb3c867ed183861e22e28\\"]:\n\nSQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'files\\/ce6ec4f462fbb3c867ed183861e22e28' for key 'lock_key_index'\",\"Exception\":\"Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException\",\"Code\":0,\"Trace\":\"#0 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/DBALException.php(116): Doctrine\\DBAL\\Driver\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\DBAL\\Driver\\PDOException))\n#1 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/Connection.php(996): Doctrine\\DBAL\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\DBAL\\Driver\\PDOMySql\\Driver), Object(Doctrine\\DBAL\\Driver\\PDOException), 'INSERT INTO `oc...', Array)\\n#2 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/db\\\/connection.php(205): Doctrine\\\\DBAL\\\\Connection->executeUpdate('INSERT INTO`oc...', Array, Array)\n#3 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/db\\/adapter.php(93): OC\\DB\\Connection->executeUpdate('INSERT INTO `oc...', Array)\\n#4 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/db\\\/connection.php(243): OC\\\\DB\\\\Adapter->insertIfNotExist('*PREFIX*file_lo...', Array, Array)\\n#5 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/lock\\\/dblockingprovider.php(113): OC\\\\DB\\\\Connection->insertIfNotExist('*PREFIX*file_lo...', Array, Array)\\n#6 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/lock\\\/dblockingprovider.php(158): OC\\\\Lock\\\\DBLockingProvider->initLockField('files\\\/ce6ec4f46...', 1)\\n#7 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/storage\\\/common.php(663): OC\\\\Lock\\\\DBLockingProvider->acquireLock('files\\\/ce6ec4f46...', 1)\\n#8 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/storage\\\/wrapper\\\/wrapper.php(577): OC\\\\Files\\\\Storage\\\\Common->acquireLock('files\\\/DSA', 1, Object(OC\\\\Lock\\\\DBLockingProvider))\\n#9 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/storage\\\/wrapper\\\/wrapper.php(577): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Wrapper->acquireLock('files\\\/DSA', 1, Object(OC\\\\Lock\\\\DBLockingProvider))\\n#10 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/view.php(1849): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Wrapper->acquireLock('files\\\/DSA', 1, Object(OC\\\\Lock\\\\DBLockingProvider))\\n#11 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/view.php(1956): OC\\\\Files\\\\View->lockPath('\\\/DSA', 1)\\n#12 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/view.php(1230): OC\\\\Files\\\\View->lockFile('DSA\\\/25. Tools\\\/h...', 1)\\n#13 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/files\\\/view.php(1277): OC\\\\Files\\\\View->getCacheEntry(Object(OCA\\\\Files_Trashbin\\\\Storage), 'files\\\/DSA\\\/25. T...', 'DSA\\\/25. Tools\\\/h...')\\n#14 \\\/var\\\/www\\\/html\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/connector\\\/sabre\\\/objecttree.php(155): OC\\\\Files\\\\View->getFileInfo('\\\/Administrator\\\/...')\\n#15 \\\/var\\\/www\\\/html\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/connector\\\/sabre\\\/lockplugin.php(58): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\ObjectTree->getNodeForPath('DSA\\\/25. Tools\\\/h...')\\n#16 [internal function]: OCA\\\\DAV\\\\Connector\\\\Sabre\\\\LockPlugin->getLock(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#17 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#18 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(446): Sabre\\\\Event\\\\EventEmitter->emit('beforeMethod', Array)\\n#19 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(248): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#20 \\\/var\\\/www\\\/html\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(55): Sabre\\\\DAV\\\\Server->exec()\\n#21 \\\/var\\\/www\\\/html\\\/owncloud\\\/remote.php(138): require_once('\\\/var\\\/www\\\/html\\\/o...')\\n#22 {main}\",\"File\":\"\\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/AbstractMySQLDriver.php\",\"Line\":66,\"User\":\"Administrator\"}","level":4,"time":"2016-06-07T16:04:53+00:00"}
{"reqId":"V1cI@JU7Bkt0cmgPOaoxIQAAAAg","remoteAddr":"134.3.106.30","app":"webdav","message":"Exception: {\"Message\":\"An exception occurred while executing 'INSERT INTO`oc_file_locks`(`key`,`lock`,`ttl`) SELECT ?,?,? FROM`oc_file_locks`WHERE`key`= ? HAVING COUNT(*) = 0' with params [\\\"files\\\\\\\/ce6ec4f462fbb3c867ed183861e22e28\\\", 1, 1465325321, \\\"files\\\\\\\/ce6ec4f462fbb3c867ed183861e22e28\\\"]:\\n\\nSQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'files\\\/ce6ec4f462fbb3c867ed183861e22e28' for key 'lock_key_index'\",\"Exception\":\"Doctrine\\\\DBAL\\\\Exception\\\\UniqueConstraintViolationException\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(116): Doctrine\\\\DBAL\\\\Driver\\\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException))\\n#1 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(996): Doctrine\\\\DBAL\\\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOMySql\\\\Driver), Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException), 'INSERT INTO`oc...', Array)\n#2 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/db\\/connection.php(205): Doctrine\\DBAL\\Connection->executeUpdate('INSERT INTO `oc...', Array, Array)\\n#3 \\\/var\\\/www\\\/html\\\/owncloud\\\/lib\\\/private\\\/db\\\/adapter.php(93): OC\\\\DB\\\\Connection->executeUpdate('INSERT INTO`oc...', Array)\n#4 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/db\\/connection.php(243): OC\\DB\\Adapter->insertIfNotExist('_PREFIX_file_lo...', Array, Array)\n#5 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/lock\\/dblockingprovider.php(113): OC\\DB\\Connection->insertIfNotExist('_PREFIX_file_lo...', Array, Array)\n#6 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/lock\\/dblockingprovider.php(158): OC\\Lock\\DBLockingProvider->initLockField('files\\/ce6ec4f46...', 1)\n#7 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/common.php(663): OC\\Lock\\DBLockingProvider->acquireLock('files\\/ce6ec4f46...', 1)\n#8 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/wrapper\\/wrapper.php(577): OC\\Files\\Storage\\Common->acquireLock('files\\/DSA', 1, Object(OC\\Lock\\DBLockingProvider))\n#9 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/storage\\/wrapper\\/wrapper.php(577): OC\\Files\\Storage\\Wrapper\\Wrapper->acquireLock('files\\/DSA', 1, Object(OC\\Lock\\DBLockingProvider))\n#10 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1849): OC\\Files\\Storage\\Wrapper\\Wrapper->acquireLock('files\\/DSA', 1, Object(OC\\Lock\\DBLockingProvider))\n#11 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1956): OC\\Files\\View->lockPath('\\/DSA', 1)\n#12 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1230): OC\\Files\\View->lockFile('DSA\\/25. Tools\\/h...', 1)\n#13 \\/var\\/www\\/html\\/owncloud\\/lib\\/private\\/files\\/view.php(1277): OC\\Files\\View->getCacheEntry(Object(OCA\\Files_Trashbin\\Storage), 'files\\/DSA\\/25. T...', 'DSA\\/25. Tools\\/h...')\n#14 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/lib\\/connector\\/sabre\\/objecttree.php(155): OC\\Files\\View->getFileInfo('\\/Administrator\\/...')\n#15 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/lib\\/connector\\/sabre\\/lockplugin.php(58): OCA\\DAV\\Connector\\Sabre\\ObjectTree->getNodeForPath('DSA\\/25. Tools\\/h...')\n#16 [internal function]: OCA\\DAV\\Connector\\Sabre\\LockPlugin->getLock(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#17 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/event\\/lib\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#18 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/dav\\/lib\\/DAV\\/Server.php(446): Sabre\\Event\\EventEmitter->emit('beforeMethod', Array)\n#19 \\/var\\/www\\/html\\/owncloud\\/3rdparty\\/sabre\\/dav\\/lib\\/DAV\\/Server.php(248): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#20 \\/var\\/www\\/html\\/owncloud\\/apps\\/dav\\/appinfo\\/v1\\/webdav.php(55): Sabre\\DAV\\Server->exec()\n#21 \\/var\\/www\\/html\\/owncloud\\/remote.php(138): require_once('\\/var\\/www\\/html\\/o...')\n#22 {main}\",\"File\":\"\\/var\\/www\\/html\\/owncloud\\/3rdparty\\/doctrine\\/dbal\\/lib\\/Doctrine\\/DBAL\\/Driver\\/AbstractMySQLDriver.php\",\"Line\":66,\"User\":\"Administrator\"}","level":4,"time":"2016-06-07T17:48:41+00:00"}

Add f-droid releases

Just as the title says add f-droid to the app stores we release the app to.

@tobiasKaminsky I just assigned the issue to you since you know your way around f-droid's mechanisms on how to get apps into their app store.

Feature Request: Prevent duplicate uploads

Wanted behaviour

When I attempt to upload a duplicate file, I'd like it to prompt me before it uploads. Maybe a message that states "x with that name and datestamp already exists. Upload another copy?"

In an ideal world it would be able to do this with several files in one go, rather than 1 by 1 so as to agree or disagree with duplicate uploads all at once, but anything would be acceptable at the moment.

Actual behaviour

Currently uploading duplicates just appends a number in brackets, meaning I then later have to manually remove duplicates.

Context:
https://help.nextcloud.com/t/is-there-anything-to-stop-duplicates-being-uploaded/1146

Allow 2-way-sync

When 'syncronizing' a folder in the nextCloud app, actually changes from the remote server become propagated on the mobile device. However changes on the mobile device aren't uploaded back to the remote server.

How the nextCloud app should behave:

  • files added to a synchronized folder should be scanned/recognized
  • changes to files (create, update, delete) of a synchronized folder should be propagated back to the server
  • conflicting changes should open a dialog (overwrite on device/server, rename)

Removing file crashes app.

nextcloud fdroid beta, version 20160613
Trying to remove a file which is not synced locally produces the following result:

(Also I wanted to send the bug report generated by the app, but it doesn't provide an email address to send it to.)

************ CAUSE OF ERROR ************

android.content.res.Resources$NotFoundException: String resource ID #0x7f08017f
    at android.content.res.Resources.getText(Resources.java:336)
    at android.content.res.XResources.getText(XResources.java:1065)
    at android.content.res.Resources.getString(Resources.java:424)
    at android.support.v4.app.Fragment.getString(Fragment.java:661)
    at com.owncloud.android.ui.dialog.ConfirmationDialogFragment.onCreateDialog(ConfirmationDialogFragment.java:100)
    at com.owncloud.android.ui.dialog.RemoveFileDialogFragment.onCreateDialog(RemoveFileDialogFragment.java:77)
    at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:308)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5461)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:134)

************ DEVICE INFORMATION ***********
Brand: motorola
Device: condor_umts
Model: Moto E
Product: cm_condor

************ FIRMWARE ************
SDK: 23
Release: 6.0.1

Sending resized images

If the image is not downloaded a resized image version is sent.
Should this be clarified by using "send resized image" and use "send original size" when downloaded?

App doesn't remember cloud connection

Actual behaviour

-If mobile is restarted (I use planned switch-off/on during night) app asks for url, username and password

Expected behaviour

-App should at least pre-fill last cloud URL and username or if it is not security issue save credentials and login automatically.

Steps to reproduce

  1. login into app
  2. restart phone
  3. start app

Environment data

Android version: 4.2.1

Device model: evolveo strongphone

Nextcloud app version: 1.0.1

Remove mail_feedback

There is the mail_feedback thingy implemented which goes to [email protected], this mail address is not routed at the moment.

I'd advise that we maybe link them to our bug tracker or a new category in our forum instead. Any thoughts?

cc @nextcloud/android

Grid view > back while folder is loading crashes app

Actual behaviour

If "Show grid view" and then the back arrow in the top left corner are clicked, while a folders contents are still loading, the nextcloud app crashes.

Expected behaviour

The app should just go back to the previous folder without crashing.

Steps to reproduce

  1. Open a folder with many files (I used my instant upload folder, and tested with others)
  2. While it's loading, click the three dot menu in the top right
  3. Click "Grid view" (going the opposite direction and choosing "List view" won't crash the app)
  4. Click the left/back arrow in the top, left corner of the app

Works every time.

Environment data

Android version:
5.1.1

Device model:
Samsung galaxy prime

Stock or customized system:
Stock for Samsung

Nextcloud app version:
1.1.0

Nextcloud server version:
ownCloud 9.0.2

Cache resized images on local deletion of an image

When deleting an image locally on the phone the app should generate an resized image of it prior to deletion.
With that (if the cache is big enough) the images can still be shown by thumbnail/resized image without server interaction.

Store files on SD card

Currently all files synchronized by the app become stored on the internaml device memory. However it should be able to store files to the SD card instead.

A typically use case would be synchronizing a music library, which could exceed the internal storage by far and is ideally stored on a modern SD card.

PR: #92

Move vs Copy are both disruptive - can it work like other apps?

Actual behaviour

When uploading, the options provided are to either move the file from it's location to the NC directory or make a copy of it.

For the former and especially in the case of photos traditionally kept in DCIM this leads to fragmentation of files in other places on the filesystem (and therefore harder to manage)

For the latter, copying doubles storage usage per file, with many photos taken the disk usage can get into the gigabytes before the day is over.

Expected behaviour

Like other apps, uploading shouldn't disrupt the location of files nor duplicate everything on storage.
Perhaps investigating and replicating the functionality of dropbox, onedrive or Google photos would be a good place to start.

Steps to reproduce

  1. Tap to upload
  2. Choose whether to move or copy
  3. Instantly regret either decision

Context: https://help.nextcloud.com/t/android-copy-vs-move-on-upload-there-has-to-be-a-better-way/631

App version 1.0.1 incompatible with 9.0.50 (nginx)

Actual behaviour

Android app v. 1.0.1
Server v 9.0.50
After the Android app got autoupdated on my phone the server view just tries to refresh but won't update.
Server works fine with OC desktop app on Mac OS X Maverics and NC web-app works fine.
Tried removing the profile in the app and add it back. When NC app tries to conenct to the server the app responds with "Unknown error occurred!" Tested both on WiFi on the same LAN as the server, and via 4G.

Expected behaviour

Android app 1.0.1 should manage to reload content from server version 9.0.50.

Steps to reproduce

  1. Remove server profile in app
  2. Add it back
  3. "Unknown error occurred!" should appear

Environment data

Android version:
6.0.1 Marshmallow
Device model:
Nexus 5X
Stock or customized system:
Stock
Nextcloud app version:
1.0.1
Nextcloud server version:
9.0.50

Logs

Web server error log

Nothing in the access logs or error logs in nginx - nothing in the nextcloud.log

Nextcloud log (data/nextcloud.log)

Could not find the logs under /data or /sdcard/nextcloud or /sdcard/Android/com.nextcloud.client

Bug: Freezes up on Uploading

Server: OwnCloud 9.0.2
App: NextCloud
Server Host: HostGator

At random the files would not be uploading, or some do upload while the status shows 0% uploading.

This occurs on a Google Nexus 6P with all updates installed.

NullPointerException in UploadFinishReceiver (reason unknown) via Play Store Console

App Version 1.0.0

Android version
Android 5.01

Device
ZenFone 2 (ZE551ML) (Z00A)

java.lang.RuntimeException: Error receiving broadcast Intent { act=com.owncloud.android.files.services.FileUploaderUPLOAD_FINISH flg=0x10 (has extras) } in com.owncloud.android.ui.activity.FileDisplayActivity$UploadFinishReceiver@12b4375c
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:874)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5264)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.owncloud.android.datamodel.OCFile.getRemotePath()' on a null object reference
    at com.owncloud.android.ui.activity.FileDisplayActivity$UploadFinishReceiver.onReceive(FileDisplayActivity.java:1075)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:864)
    ... 8 more

Feature request: watched folders

I have several folders on my device that hold images; screenshots, whatsapp, DCIM, downloads, etc

With Google Photos I can select local directories outside of DCIM to watch and backup, can this functionality be added to the NC client also? We currently have autobackup for DCIM, but adding others to that list (and their respective locations on NC server) would be great.

Slight design optimizations for the login screen

As per discussion with @nextcloud/designers / @jancborchardt

  • remove the card view (white hovering thingy)
  • color of input fields to be white
  • "Do you know Nextcloud?" to white, but semi-transparent at 50% which means #7fc0e3 (since we don't have transparency, or at least I couldn't find it for text, just backgrounds)

Development will be done on: https://github.com/nextcloud/android/tree/loginLayout
The Branch could also be used to do #16 while working on the login screen changes from this issue

small setup screen improvement

I just installed the Nextcloud app, great work from everybody!

When I start the app for the first time it ask for the usual stuff like URL, username and password. Below the input fields there is a "Do you know Nextcloud?" link (don't know the exact wording because I installed it on a German environment). This points to Nextcloud.com/news. Wouldn't it be better to link to Nextcloud.com/about? Might be more useful to learn more about Nextcloud than the blogs.

Question: Nextcloud or ownclou beta?

I can recognize some names, so would like to ask.

Is this nextcloud app still compatible with owncloud? Will it remain so?

What is the relationship between the apps? (meaning if you're going to continue to cooperate on both or are the apps going to diverge eventually..)

I was really fond of your work and I got used to using many features from the beta app (with the stable one serving as a back up) and I was happy when I could contribute in a meaningful way..

That is why I would like to know what the current situation is..

Move magic numbers in layout files to @dims

Actual behaviour

-many magic numbers in layout like 4dp, see review comments in #5

Expected behaviour

-move magic numbers like 4dp (widely used) to the dims.xml file as a constant

No instant update of folder list when changing active account (Nextcloud beta Android-App 20160621)

Actual behaviour

No "instant" update of the files list after choosing a different account from the dropdown.

One have to wait until the screen gets locked. After unlocking the screen the files list is getting updated (caused by an event ?). Manually updating the account (via '...' menu) works well. In no case there's any visual feedback (except the changing files list) which might be suboptimal.

Expected behaviour

Choosing a different account should lead to an instant update of the files list so one can see the directory structure of the recently choosen account

Steps to reproduce

  1. Have two different accounts ready to use with different files/directories
  2. have a look on the current files list
  3. choose the other account
  4. have a look on the current files list and notice it's NOT the files list of the current but the previous account
  5. wait until the lock screen appears
  6. unlock the screen and notice that now you see the proper list

Environment data

Android version: Android 6.0.1

Device model: Samsung SM-G900F (S5 klte)

Stock or customized system: customized CM 13.0

Nextcloud app version: Nextcloud beta Android-App 20160621

Nextcloud server version: 9.0.50

Logs

Web server error log

Insert your webserver log here

Nextcloud log (data/nextcloud.log)

Insert your Nextcloud log here

Refactor: Create a ThumbImageView

Thumbnails of images are currently shown in 3 different places. The uploadlist, the local file browser and the normal folder view of an nextcloud folder.

The code to generate a thumbnail / kickof the thumbnail generation is present in all of there places.

To unify this, i would like to propose a ThumbImageView class which subclases ImageView. This Class should handle all concern regarding File or OCFile -> Thumbnail, by calling ThumbManager and so on.

The ImageView objects are reused in the list views, all code accesing these Views has to check whether the reference they use, still refer to a View with the initial File, this could be solved by having a Reference to OCFile or File on the ThumbImageView aswell as the unique thumbnail CacheKey!

So we have some new methods like
void setFile(File file);
void setOCFile(OCFile file);
int getCacheKey(); (maybe override .hashCode(), but this could be problematic with OCFiles not existing)

Another possibility would be to introduce two additional classes
FileThumbImageView and OCFileThumbImageView.. As far as i understand it, the Upload Queue and local filebrowser lists use File and the nextcloud folder browser uses OCFile..

This should only a refactor not any addition of new functionality.

German playstore description

Actual behaviour

The german description in the playstore at the moment is:
"Die Nextcloud Android App kΓΆnnen Sie alle Ihre Dateien auf Ihrem Nextcloud zugreifen."

Expected behaviour

sholud be:
Die Nextcloud Android App. Mit ihr kΓΆnnen Sie auf alle Ihre Dateien in Ihrer Nextcloud zugreifen.

Steps to reproduce

Search for the nextcloud app in german playstore

Environment data

Android version: 6.01
Playstore Version: 6.5.08.D-all 2792142

Device model:
SGS5
Stock or customized system:
customized
Nextcloud app version:
1.0.0
Nextcloud server version:
oc 9.0.2

Logs

Web server error log

Insert your webserver log here

Nextcloud log (data/nextcloud.log)

Insert your Nextcloud log here

Allow arbitrary folders to be synchronized

Currently the nextCloud app will create a one to one folder representation of the remote server when synchronizing a directory. However it would be really helpful on a mobile device to map a device directory to a remote server directory.

A use case would be syncronizing a workspace directory of an app on the mobile device with a dedicated directory path on the remote server. For instance a directory with pictures often edited by a mobile app synchronized with a subpath of 'Photos' on the remote server. Or you want to synchronize a shared folder with music into your music library directory on your mobile device...

This would assume issue #19 to be working, such that changes on the mobile device are propagated to the remote server.


There is an open bounty on this issue. Add to the bounty at Bountysource
badge

F-Droid

Actual behaviour

-Tell us what happens
google apps only

Expected behaviour

-Tell us what should happen
should be also in F-Droid Markedplace

Steps to reproduce

  • no steps

Environment data

Android version:
all ;)
Device model:
all ;)

(but the "muster/sample " it's really good on the issue list πŸ‘ :)

best regards
Blacky

Same code style for AndroidStudio

As proposed in ownCloud we should identify how to use (and enforce) the same style guide.
And then, after merging most of the old PR, we should refactor every class :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.