owncloud / android

:phone: The ownCloud Android App
GNU General Public License v2.0
3.84k stars 3.06k forks source link

[RELEASE] 3.0 #3724

Closed jesmrec closed 1 year ago

jesmrec commented 2 years ago

Synchronization engine with new architecture

TASKS:


QA (pending reports)

S1:

S2:

S3:

jesmrec commented 2 years ago

(1) [S1] [FIXED]

  1. Download a text file, or set it as av. offline
  2. Go back to the list of files
  3. In server, modify the text file
  4. Open txt file in app

Current: download enqueued but old content displayed. By reopening the file, content is correct. Expected: download done and new content displayed

Happens in:

jesmrec commented 2 years ago

(2) [S1] [WONT FIX]

(unfortunately, not always reproducible)

  1. Install app from scratch
  2. Add basic auth account

Current: After entering credentials, app is frozen. Reopening the app not always fix the problem. Sounds like a problem in dependency injection Expected: Smooth authentication and file list process

Samsung A51 Android 12 d470bd968

Happens in:

jesmrec commented 2 years ago

(3) [S2] [FIXED]

  1. Enter in an OAuth2 account
  2. In the server, remove the token
  3. In the app, download a file

Current: notification not clickable in snackbar Expected: notification clickable to redirect to login view

master 3.0-beta.2
Screenshot_20221004_165248 Screenshot_20221004_164946

Happens in:

jesmrec commented 2 years ago

(4) [S2] [FIXED]

  1. Select a file in file list
  2. Click on download or select av. offline option

Current: Sync badge is gone Expected: Sync badge displayed

Happens in:

Update: Fixed in https://github.com/owncloud/android/pull/3790

jesmrec commented 2 years ago

(5) [S3]

  1. Install v2.18.3 (or any version before Scoped Storage release)
  2. Add account
  3. Upload a very big file
  4. Before the upload ends, upgrade to current and run wizard
  5. Open uploads view

Current: upload stucked and never ends. Expected: upload resumed and finished

Happens in:

jesmrec commented 2 years ago

(6) [S2] [FIXED]

  1. Select a big file from the file list
  2. Click on the down arrow on the toolbar to download it

File starts to download (badge is gone as (14)), the way to check it is the Details view.

By cancelling the selection mode, and selecting the file again, the (x) to cancel is in the toolbar. By clicking the (x), the download is cancelled but the (x) remains in the toolbar.

Expected: Download and cancel buttons should be handled dinamically in toolbar, as in master. That means:

Sometimes, by clicking several times in (x) after cancelling, app crashes

Behaviour is correctly implemented in Details view

Happens in:

jesmrec commented 2 years ago

(7) [S3]

Related to https://github.com/owncloud/android/issues/3498

  1. Create a link on a pdf file
  2. Open Links tab
  3. Clink on the pdf file -> open details view
  4. Select Open with and open the file with an external app
  5. Go back to oC app

Current: Toolbar shows Shared by link in the details view

Happens in:

jesmrec commented 2 years ago

(8) [S3]

  1. Open Details view of any file in the root folder
  2. Click on Share icon on the top
  3. Click on back arrow

Current: toolbar is not correct. It includes items of root folder instead of Details view Expected: Details view items

Happens in:

jesmrec commented 2 years ago

(9) [S3]

  1. Select a folder
  2. Select Copy
  3. Select as target folder, same folder as 1.

Current: error message is too long, and could not be read completely:

Screenshot 2022-08-19 at 13 45 51

Expected (master): message is reduced: It is not possible to copy a folder into a descendant

NOTE: same for move

Happens in:

jesmrec commented 2 years ago

(10) [S3]

  1. Browse to folder Photos
  2. Select a file to upload inside
  3. Before submitting, remove the folder Photos in another client
  4. Submit the upload

Current: Photos folder is created again with the picture inside Expected: Folder was deleted, so it should trigger a Folder error. Maybe the current behaviour is not too evil, open to discussion

Happens in:

jesmrec commented 2 years ago

(11) [S3]

Open to discussion: when a bunch of files is uploaded and uploads run fast. it's difficult to check what's going on in the uploads view because items move up and down very fast in a non-readable way:

https://user-images.githubusercontent.com/14894746/185399118-6aaded4a-d1e9-46bc-9146-4a6bd88870bd.mp4

Happens in:

jesmrec commented 2 years ago

(12) [S3]

  1. Set to upload a very big file
  2. When file is uploading, set to upload other files

Current: Pending files with the status Uploading, same as the file that is really being uploaded:

Screenshot 2022-08-29 at 13 51 04

Expected: different status. File uploading with Uploading and others with Waiting or similar

Happens in:

jesmrec commented 2 years ago

(13) [S3] (improvement)

  1. Upload many files manually
  2. Remove device connection

Current: it may happen that the amount of enqueued files is very big. For example:

Screenshot 2022-08-31 at 15 07 51

Do you think it'd be interesting to add a Clear button to the enqueued? is it feasible to cancel works at that point?

Happens in:

jesmrec commented 2 years ago

(14) (improvement) [S3]

  1. Set a folder with many items inside as av. offline (so, the sync operation will take more time)

Current: The option Unset as av. offline is available in three dot menu while the folder is being synced. Expected (current master): while folder is being synced, the option to Unset as av. offline is available on the top bar, so only one click is required to cancel sync:

Screenshot 2022-07-29 at 10 48 32

Happens in:

jesmrec commented 2 years ago

(15) [S3]

Comes from https://github.com/owncloud/android/issues/2653

When a folder lacks of writing permission, FAB button could be hidden/disabled. In that way, we will avoid users to perform actions that will be banned.

Permissions available in property <oc:permissions> with the following values:

https://github.com/owncloud/client/blob/cedf72825bc0db8e3c147958a9382ee5b411d9ea/src/common/remotepermissions.h#L42-L54

Samsung A52 8f2d519d

Happens in:

jesmrec commented 2 years ago

(16) [S2]

  1. Log in a OAuth2 server

Current: after first authentication, a credentials error is returned. By re-signing, everything OK Expected: No error after first authentication

Some logs were caught over cloud.damken.com:

owncloud.2022-11-03.log

d470bd9685

Happens in:

jesmrec commented 2 years ago

(17) [S3]

  1. In oCIS user dashboard, set any user's quota to 1GB
  2. Open app drawer of such user

Current: xMB of 982.2 MB used Expected: xMB of 1 GB used

Maybe not a client issue, maybe yes... open to discussion Same issue with other values.

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(18) [S2] [OUT OF SCOPE]

Maybe a feature, not a bug

  1. Set several files to upload. I used 20, to have tome to perform the following steps
  2. While files are uploading, remove connection. Some of them have finished, the rest will fail
  3. Switch to the containing folder

Current: none of the uploaded (finished) files are there Expected: the uploaded files are there

Samsung A51, Android 12 f14caeff2

Happens in:

In master, after each upload, the file is stored in the database. In the new architecture, uploads won't be shown in the file list till the user refreshes

FMPOV is not a feature, nor a bug since it does not break anything, files will be there after the next refresh. It is the expected behavior when it was developed. Open to discuss, but it would be out of the scope of 3.0

Update 11/11/2022:

Taken as expected, but could be confusing for users that will expect files in the list. Let's wait for feedback

jesmrec commented 2 years ago

(19) [S3]

  1. Set device to offline
  2. Set an image to download

Current: Downloading... status forever Expected (master): Download error view

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(20) [S2]

  1. Upload a big file to oCIS (i used a 2GB one)
  2. Wait till upload ends

Current: in uploads view, it shows Unknown error, but file is uploaded and listed in the list view Expected: Finished in uploads view

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(21) [S2] (server could be involved)

  1. in oCIS, upload several big files (to have time to perform next steps). For this example, upload 5 files
  2. Cancel some of them, for example 3, in uploads view

Current: All 5 files appear in the target folder. The cancelled ones with 0B size Expected: Cancelled files not appearing in the file list

Samsung A51, Android 12 f14caeff2

Happens in:

maybe server involved... not sure. Propfind returns 0B files, but, they shouldn't be created from client side.

Notes: Upload is never cancelled actually. The PUT operation isn't aborted, so the HTTP request always returns 201 and it is considered a success. Therefore, a new file is created, sometimes with the whole size of the file and sometimes with 0 B. It happens in master too.

jesmrec commented 2 years ago

(22) [S3] [FIXED]

  1. in oCIS, upload a big file (to have time to perform next steps)
  2. Before file finishes, kill the app
  3. Reopen the app and check the uploads view

Current: upload with Unknown error Expected (msater): upload with App was terminated

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(23) [S3]

in a https with self-signed certificate server, try to stream a video (no matter if oCIS or oC10)

Current: message Streaming cannot be initialized because your server certificate is untrusted. File download will start automatically. But, file does not start to download

Expected: Two options, both work for me: 1) Change the error message, by removing the last statement. 2) Make the file download after the error is displayed

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(24) [S2]

  1. In oCIS server, create a public link over an item that is NOT in root folder

Current: link does not appear in the list till containing folder is refreshed. That does not happen in oC10. Expected: After creating the link, link is in the list and item is marked in the file list

NOTE: Same behaviour with "share with users"

Samsung A51, Android 12 f14caeff2

Happens in:

 Network call

oC10 response

{
  "ocs": {
    "meta": {
      "status": "ok",
      "statuscode": 200,
      "message": null,
      "totalitems": "",
      "itemsperpage": ""
    },
    "data": {
      "id": "4",
      "share_type": 3,
      "uid_owner": "demo",
      "displayname_owner": "demo",
      "permissions": 1,
      "stime": 1668076479,
      "parent": null,
      "expiration": null,
      "token": "VBV2z5k8aocZdR1",
      "uid_file_owner": "demo",
      "displayname_file_owner": "demo",
      "additional_info_owner": null,
      "additional_info_file_owner": null,
      "path": "/Photos/Portugal.jpg",
      "mimetype": "image/jpeg",
      "storage_id": "home::demo",
      "storage": 2,
      "item_type": "file",
      "item_source": 11,
      "file_source": 11,
      "file_parent": 9,
      "file_target": "/Portugal.jpg",
      "name": "Portugal.jpg link",
      "url": "https://demo.owncloud.com/s/VBV2z5k8aocZdR1",
      "mail_send": 0,
      "attributes": null
    }
  }
}

oCIS response

{
  "ocs": {
    "meta": {
      "status": "ok",
      "statuscode": 200,
      "message": "OK"
    },
    "data": {
      "id": "UQGYzwCADYzQcRs",
      "share_type": 3,
      "uid_owner": "admin",
      "displayname_owner": "Admin",
      "additional_info_owner": "admin@example.org",
      "permissions": 1,
      "stime": 1668076845,
      "parent": "",
      "expiration": "",
      "token": "qxjYozSQoUubTJU",
      "uid_file_owner": "admin",
      "displayname_file_owner": "Admin",
      "additional_info_file_owner": "admin@example.org",
      "state": 0,
      "path": "/random000.file",
      "item_type": "file",
      "mimetype": "application/octet-stream",
      "storage_id": "shared::/random000.file",
      "storage": 0,
      "item_source": "1284d238-aa92-42ce-bdc4-0b0000009157$2331dfd3-18b3-43f3-b0a5-ce8ec9fdf0f3!df672e93-1f98-435b-a091-b970a94d04a3",
      "file_source": "1284d238-aa92-42ce-bdc4-0b0000009157$2331dfd3-18b3-43f3-b0a5-ce8ec9fdf0f3!df672e93-1f98-435b-a091-b970a94d04a3",
      "file_parent": "1284d238-aa92-42ce-bdc4-0b0000009157$2331dfd3-18b3-43f3-b0a5-ce8ec9fdf0f3!0dc6f1b4-f17d-4d4d-a614-bff0cfe7e93a",
      "file_target": "/random000.file",
      "share_with_user_type": 0,
      "share_with_additional_info": "",
      "mail_send": 0,
      "name": "random000.file link",
      "url": "https://ocis.ocis-traefik.latest.owncloud.works/s/qxjYozSQoUubTJU"
    }
  }
}

oCIS does not return the absolute path properly when creating a new public link. It is properly retrieved when getting the shares for that file though. That's why it is showing properly after refreshing the view

jesmrec commented 2 years ago

(25) [S2] [FIXED]

  1. In oCIS, create a public link
  2. Delete the public link using the trashbin icon

Current: It was not posible to unshare this file or folder because server could not be reached. Server return 200 to the DELETE request. Link is removed finally Expected: No error message

NOTE: Same behaviour with "share with users"

Samsung A51, Android 12 f14caeff2

Happens in:

Network call

DELETE https://demo.owncloud.com/ocs/v2.php/apps/files_sharing/api/v1/shares/1?format=json

oC10 response

{"ocs":{"meta":{"status":"ok","statuscode":200,"message":null,"totalitems":"","itemsperpage":""},"data":[]}}

oCIS response

{"ocs":{"meta":{"status":"ok","statuscode":200,"message":"OK"}}}

At the moment, data is expected in the android app, so if it doesn't come, the parsing fails. We can adapt the parser to the new way.

jesmrec commented 2 years ago

(26) [S3] [No regression]

  1. Share item with user
  2. Try to share the same item with same user

Current: Error displayed: It was not posible to unshare this file or folder because server could not be reached Expected: More accurate error

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(27) [S3] [No regression]

  1. Share item with user without sharing permission
  2. Recipient shares the item with another user

Current: Error displayed: It was not posible to share this file or folder because it was not found Expected: More accurate error, or prevent sharing for shared items without such permission.

Samsung A51, Android 12 f14caeff2

We receive a 404 when trying to do that, and the expected message for 404 errors isnot found. Shouldn't we get a 403 if resharing is not allowed?

jesmrec commented 2 years ago

(28) [S3]

  1. User1 shares txt file with User2 without edit permission
  2. User2 receives the file and try to edit it
  3. User2 saves changes

Current: Unknown error in uploads view Expected (master): Permission error

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(29) [S3] [No regression]

  1. User1 shares a folder with User2, with no create permission
  2. User2 tries to upload something inside

Current: Unknown error in uploads view Expected: More accurate error

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(30) [S2] [Not always reproducible]

  1. Set a large image to download
  2. Cancel the download in the preview

Current: Download progress bar is not continuos, so, cancelling sometimes comes later and the cancelled image is finally downloaded:

https://user-images.githubusercontent.com/14894746/200775703-0dee1241-0f3e-48bf-a918-915ba89f79ef.mp4

Expected: Download progress bar with progress information

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(31) [S2] (moved to server)

  1. In oCIS, select some files from the list
  2. Copy the files to another location

Current: ugly error in snackbar. First file is copied to the location, but the other files don't

Expected: files copied with no error

https://user-images.githubusercontent.com/14894746/200879432-b9623db9-a63d-49bb-b63b-ad7f17e7a34e.mp4

Samsung A51, Android 12 f14caeff2

Happens in:

When copying a file, we expect the fileId of the copied file in the response headers OC-FileId In oCIS we don't receive that data which makes it fail.

Server issue: https://github.com/owncloud/ocis/issues/5039

jesmrec commented 2 years ago

(32) [S2]

  1. In app, download a txt file
  2. In server, modify the txt file
  3. In app, move the file to another location

Current: file is shown as conflicted Expected: file was always remote-modified, no local modification. So, no conflict should happen.

Samsung A51, Android 12 f14caeff2

Happens in:

Reproducible if the file is synced while picking the destination folder, otherwise it does not happen. Moving the file uses the latest state before moving, so if it is updated by the way, recent changes won't be applied and conflict may appear

jesmrec commented 2 years ago

(33) [S3]

  1. Open details view of any file
  2. Click on sync -> OK
  3. In server, remove the file
  4. Click again on sync

current: nothing happens expected: move back to the list of files

Samsung A51, Android 12 f14caeff2

Happens in:

jesmrec commented 2 years ago

(34) [S2] [FIRST FIX, improvements pending]

There is no way to cancel a folder sync / av. offline.

Samsung A51, Android 12 f14caeff2

Happens in:

Update: Fixed in https://github.com/owncloud/android/pull/3790

jesmrec commented 2 years ago

(35) [S1] [FIXED]

  1. Create a new document using a 3rd-party-app compatible with document provider
  2. Save it in a oC account's root folder

Current: app crashes. File is always save in the parent folder. That means, by selecting A/B/C to save the file, it is saved in A/B instead. So, root folder does not have parent and make the app crash

Expected: No crash

Samsung A51, Android 12 https://github.com/owncloud/android/commit/f14caeff2afc4481ff7115058db34a801d901223

Happens in:

Update: Fixed in https://github.com/owncloud/android/pull/3790

jesmrec commented 2 years ago

(36) [S1] [FIXED]

  1. Connect a server with https insecure (needs user approval for custom certificate in login view)
  2. Once app is connected to the server, change the certificate in server side
  3. Refresh app / Reopen app

Current: Warning dialog missing and app not working. Ugly error instead. Expected: Warning displayed to be accepted by the user.

Here it is a simple guide how to simulate a certificate change: https://github.com/owncloud/ios-sdk/blob/master/doc/TESTING.md#simulating-certificate-changes

Samsung A51 Android 12 f14caeff2a

Happens in:

jesmrec commented 2 years ago

(37) [S2] [No regression] [To discuss]

Take a look together with (1)

  1. Download any file to the device
  2. Using web or any other client, modify the file
  3. In app, pull to refresh

Current: new version of the file is automatically downloaded. Expected: new version of the file not downloaded. It should be downloaded when file is opened. Automatic download when refreshing/syncing folder is for available offline stuff.

This is not a bad behaviour, but could lead to confusion for scenarios with lots of modifications and/or av. offline files. All downloaded and av. offline will behave in the same way, breaking any difference between them. Since Download status is intended to be removed , this problem should not make us to spend a lot of time. Need to discuss.

Samsung A51 Android 12 f14caeff2a

Happens in:

jesmrec commented 1 year ago

(38) [S2]

  1. Select a folder with much content
  2. Select to sync / Av. offline (no matter which one)

Current: Progress bar on the top and spinner in the screen till the sync action finishes Expected: Progress bar and spinner only displayed in pull to refresh action. For syncing, just setting status badge should be enough

Samsung A51 Android 12 492645dcf

Happens in:

JuancaG05 commented 1 year ago

(39) [S3]

  1. In a non-downloaded file, select "Open with" or "Send"
  2. Before it finishes downloading, navigate to its details view (or a preview of any file that is already downloaded)
  3. Go back to the main file list before it finishes downloading
  4. When it finishes downloading, close the bottom sheet

Current: After closing the bottom sheet, the app navigates to a non-existent file with the name of the file whose details (or whose preview) has been seen in step 2 Expected: No navigation, staying in the same folder

Samsung Galaxy S9 Android 9 7d6fb80

Happens in:

Notes: It happens due to the property file of FileActivity, from where many activities extend. When navigating to a preview or to a details view, the variable file is overwritten with the current file being previewed or whose details are being seen, and when closing the bottom sheet, the method onResume of FileDisplayActivity tries to navigate to file expecting it as a folder.

jesmrec commented 1 year ago

(40) [FIXED]

  1. In a OAuth2 account, upload a big file
  2. While the upload is being done, remove session from admin dashboard -> Upload will fail with Credentials error
  3. Tap on the failed upload in the uploads view -> redirected to login
  4. Authorize again
  5. Open uploads view and click in the cell to resume

Current: crash Expected: moved to login view

Stack trace:

FATAL EXCEPTION: main
Process: com.owncloud.android, PID: 9479
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.  at androidx.room.RoomDatabase.assertNotMainThread(RoomDatabase.java:469)
at androidx.room.RoomDatabase.query(RoomDatabase.java:525)
at androidx.room.util.DBUtil.query(DBUtil.java:86)
at com.owncloud.android.data.transfers.db.TransferDao_Impl.getTransfersWithStatus(TransferDao_Impl.java:504)
at com.owncloud.android.data.transfers.datasources.implementation.OCLocalTransferDataSource.getFailedTransfers(OCLocalTransferDataSource.kt:127)
at com.owncloud.android.data.transfers.repository.OCTransferRepository.getFailedTransfers(OCTransferRepository.kt:99)
at com.owncloud.android.usecases.transfers.uploads.RetryFailedUploadsForAccountUseCase.run(RetryFailedUploadsForAccountUseCase.kt:40)
at com.owncloud.android.usecases.transfers.uploads.RetryFailedUploadsForAccountUseCase.run(RetryFailedUploadsForAccountUseCase.kt:32)
at com.owncloud.android.domain.BaseUseCase.execute(BaseUseCase.kt:30)
at com.owncloud.android.ui.activity.UploadListActivity.onRemoteOperationFinish(UploadListActivity.java:156)
at com.owncloud.android.services.OperationsService.lambda$dispatchResultToOperationListeners$0(OperationsService.java:398)
at com.owncloud.android.services.OperationsService$$ExternalSyntheticLambda0.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8663)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Samsung A51, Android 12 b15316ff7

Happens in:

jesmrec commented 1 year ago

(41) [S2] [FIXED]

  1. Cause a conflict in a file in root folder (i used txt file)
  2. Tap on the file to fix the conflict

Current: File is not opened Expected: File opened to fix the conflict

NOTE: if the file is not in root, conflict dialog appears but app crashes after choosing any option

Samsung A51, Android 12 cfa459804

Happens in:

jesmrec commented 1 year ago

(42) [FIXED]

  1. Download and install 2.21.2
  2. Add account
  3. Download and set as av. offline some files and folders
  4. Update to current

Current: av. offline and downloaded files are missing Expected: av. offline and downloaded files are locally downloaded

Samsung A51, Android 12 1c8ac816a

Happens in:

JuancaG05 commented 1 year ago

Before 3.0, we are releasing a 3.0 beta.3 with the following fixes: