stefan-niedermann / nextcloud-deck

📋 Android client for nextcloud deck app

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Keep loading when adding my nextcloud account

MattRGX opened this issue · comments

Describe the bug

Hello,

I'm trying to install Deck on my android device (Pixel 7). I already have the nextcloud files app (working perfectly) as well as other apps (notes, memories, money buster, cook, ...), all working perfectly.

When starting Deck, the app detect well my nextcloud files account. Then i click to add and it start loading my boards.

I only have 3 differents boards (they are not big at all).

But it keeps loading and get stuck always when loading the second board. and then it get stuck in an infinite loading.

Thanks for your help.

Versions

  • Nextcloud: 27.1.4
  • Nextcloud Deck: 1.11.1
  • Nextcloud Android: 3.26.0
  • Nextcloud Android Deck: 1.23.4

Smartphone (please complete the following information):

  • Device: Pixel 7
  • Android-Version: Android 14
  • App-Store:
    • Google Play Store
    • Google Play Store (Beta channel)
    • F-Droid
    • Huawei AppGallery

Hello there,

  • can you define "infinite"? How long did you wait?
  • How's your internet connection? Do you have a strong Wi-Fi or a shitty mobile connection?
  • Can you roughly tell us the total amount of cards you have? 10? 100? 1000? 10000?
  • Did you keep the app in foreground while importing or switch to other apps / homescreen etc?
  • Did you clear the storage of the Deck Android app as described in our FAQ between your attempts?

can you define "infinite"? How long did you wait?

I would say between 10 to 15 minutes with screen ON on the app (caffein mode)

How's your internet connection? Do you have a strong Wi-Fi or a shitty mobile connection?

Yeah, i've tried both 5G or strong WiFI (i live in Paris).

Can you roughly tell us the total amount of cards you have? 10? 100? 1000? 10000?

I would say a total of around 50 to 70 cards (cumulated over my 3 boards)

Did you keep the app in foreground while importing or switch to other apps / homescreen etc?

stay on the screen of the app

Did you clear the storage of the Deck Android app as described in our FAQ between your attempts?

uninstall and reinstall the app multiple times instead. Is it the same result as clear the storage ?

Thank you very much for the fast answers. That's indeed interesting, it definitely takes too long.

uninstall and reinstall the app multiple times instead. Is it the same result as clear the storage ?

No, it is not (thank you Google).

Apparently there's an error somewhere which does not show up (as it should). Let's try to fence it. Please proceed as described in the FAQ:

Try to create a new test account at your Nextcloud instance and connect to it. If there are no errors, share the boards of your actual account one by one with your test account to find the defect one.

ok i will do that, by the way, i forgot to mention that it always get stuck when loading the board n°3. It is the one that contains most of the cards. I would say 40 to 50 cards in this one.
So it might be that board that is related to my problem ?
Does it mean that i'm gonna loose it ?

Hi. I encounter the exact same problem, and I have identified a specific board that is blocking the initial loading.
May I help somehow as well?

Versions

  • Nextcloud: 27.1.3
  • Nextcloud Deck: 1.11.2
  • Nextcloud Android: 3.26.0
  • Nextcloud Android Deck: 1.23.4

Smartphone

  • Device: Pixel 6a
  • Android-Version: Android 14
  • App-Store
    • F-Droid

@molivier-fcms did you solved your issue ?
Because on my side, i have identified as well the board that cause the infinite loading.
I've tried to export the board (as csv) from my nextcloud web interface and then i will delete it, but then there is no import option to create a board from CSV.
So i'm kinda stuck.
The weird thing overall is that the board which cause trouble in Android is totally accessible and editable on the NC web interface.

Same behavior here. If we could have more logs about what's going on, we could go further.

@molivier-fcms you mean logcat with Adb while the infinite screen is ON ?

Well, I never used adb yet ^^'
I thought about a special build of deck with debugging logs enabled (eventually).


EDIT: while trying to log with my main account again and again, I managed to load all the boards once. I tried to clone the faulty board then deleting it, hoping it would clean up some mess.

But If I clear the data of the application, it seems the deleted board it still downloaded (according the number displayed at initialization). If I clear app data, initialization fails a lot of time, but succeed sometimes.


EDIT2:

As I had ghost "boards" in database, I reverted nextcloud database with tonight backup. Now I have some success to do a first initialization. I would say 50% failure, 45% success, 5% with this error showing up :

App Version: 1.23.4
App Version Code: 1023004
Server App Version: 1.11.2
App Flavor: fdroid

Files App Version Code: 30260090 (PROD)

---

OS Version: 5.10.157-android13-4-00003-gdfb1120f912b-ab10994928(11010452)
OS API Level: 34
Device: bluejay
Manufacturer: Google
Model (and Product): Pixel 6a (bluejay)

---

android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY)
	at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
	at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:961)
	at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790)
	at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:89)
	at androidx.sqlite.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.kt:42)
	at androidx.room.EntityInsertionAdapter.insertAndReturnId(EntityInsertionAdapter.kt:102)
	at it.niedermann.nextcloud.deck.database.dao.CardDao_Impl.insert(CardDao_Impl.java:263)
	at it.niedermann.nextcloud.deck.database.dao.CardDao_Impl.insert(CardDao_Impl.java:43)
	at it.niedermann.nextcloud.deck.database.DataBaseAdapter.createCardDirectly(DataBaseAdapter.java:744)
	at it.niedermann.nextcloud.deck.remote.helpers.providers.CardDataProvider.createInDB(CardDataProvider.java:84)
	at it.niedermann.nextcloud.deck.remote.helpers.providers.CardDataProvider.createInDB(CardDataProvider.java:34)
	at it.niedermann.nextcloud.deck.remote.helpers.SyncHelper$1.onResponse(SyncHelper.java:62)
	at it.niedermann.nextcloud.deck.remote.helpers.SyncHelper$1.onResponse(SyncHelper.java:47)
	at it.niedermann.nextcloud.deck.remote.helpers.providers.CardDataProvider$1.onResponse(CardDataProvider.java:63)
	at it.niedermann.nextcloud.deck.remote.helpers.providers.CardDataProvider$1.onResponse(CardDataProvider.java:58)
	at it.niedermann.nextcloud.deck.remote.api.RequestHelper$ResponseConsumer.accept(RequestHelper.java:52)
	at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
	at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:58)
	at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
	at io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber.onNext(ObservableFromPublisher.java:56)
	at com.nextcloud.android.sso.api.NextcloudAPI.lambda$performRequestObservableV2$0$com-nextcloud-android-sso-api-NextcloudAPI(NextcloudAPI.java:123)
	at com.nextcloud.android.sso.api.NextcloudAPI$$ExternalSyntheticLambda0.subscribe(Unknown Source:6)
	at io.reactivex.internal.operators.observable.ObservableFromPublisher.subscribeActual(ObservableFromPublisher.java:31)
	at io.reactivex.Observable.subscribe(Observable.java:12284)
	at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:32)
	at io.reactivex.Observable.subscribe(Observable.java:12284)
	at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
	at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
	at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)

Sans titre

Later I had an another code error with the same message, 2061 if I'm right.
I don't know if it is related.

If it can help, i give you here logcat of my phone while infinite loading.
logcat.txt

I don't have the time to wait for a solution because i really need Deck on my phone. So i will copy the board card by card and completely create a new one, no choice...

Anyway thanks for your help and do not hesitate to ask if you want me to make some test :)

I don't have the time to wait for a solution because i really need Deck on my phone. So i will copy the board card by card and completely create a new one, no choice...

It seems a deleted board remains until nextcloud cron run. You should perform it before re-initializing deck, or the app could stuck while loading the old "invisible not yet deleted" board again (#452)

I don't have the time to wait for a solution because i really need Deck on my phone. So i will copy the board card by card and completely create a new one, no choice...

It seems a deleted board remains until nextcloud cron run. You should perform it before re-initializing deck, or the app could stuck while loading the old "invisible not yet deleted" board again (#452)

you mean perform the nextcloud cron task ? If i go to my admin panel on the web interface, it says that the CRON have just run seconds ago, so i guess that it runs correctly.

i still have weird behaviour. i create a complete new board identical as the one that cause problem. i deleted the old one and clean everything. Now when trying to load deck on my phone it says that it is loading 5 boards (and get stucked at the 3rd one) but in fact i only have 3 boards.

I've clean all data / cache of Deck app then reinstall it but it keeps want to load 5 boards.

How can i clear what the android app is viewing ? because apparently the app got some wrong information from my server.

It seems deleted boards remain in deck database even after nextcloud cron run :

nextcloud=# select * from oc_deck_boards;
 id |      title       | owner | color  | archived | deleted_at | last_modified
----+------------------+-------+--------+----------+------------+---------------
 10 | A vendre         | maoli | 0082c9 | f        |          0 |    1682096932
  7 | Idées tourisme   | maoli | 683d83 | f        |          0 |    1675156358
 11 | Prêt de livres   | maoli | f42c42 | f        |          0 |    1679217244
  6 | Articles de blog | maoli | b4d700 | f        |          0 |    1679347772
  5 | TODO             | maoli | f1db50 | f        |          0 |    1701556465
  8 | Lectures         | maoli | 6ea68f | f        |          0 |    1701726195
 12 | Board to delete  | maoli | 5e0227 | f        | 1701765231 |    1701765231
(7 rows)

I tried to remove my test database Board to delete but it blocks deck app on stage "importing boards". Also I don't know how to relate stacks and cards with boards.

It seems tweaking the database manually for removing a deleted board is a terrible idea. I have to restore last postgres backup.

@molivier-fcms i thought about it too. But didn't make it yet. You conviced me to not touch any postgres table 😁

@MattRGX : Cards are related to stacks, and stacks are related to boards. I finally found out this example of a complete board removal: #1163.

I tried it on my side and it worked : Deck app downloads the number of active boards, no more. Be sure to backup your database before, just in case.

@MattRGX : Cards are related to stacks, and stacks are related to boards. I finally found out this example of a complete board removal: #1163.

I tried it on my side and it worked : Deck app downloads the number of active boards, no more. Be sure to backup your database before, just in case.

so i've cleaned everything in database. All the boards / stacks / cards in my db are actually the ones that i use on my web interface. No old boards or cards left.

But i still cant connect the deck app. it is stuck while importing the third board (out of 3).

I'm kinda desperate ...

So you have recreated all cards from 3rd board, then removed the 3rd board.

If the issue persist, maybe there is a corruption in a card content (title/description)? Do you have special characters, such as "&" or something else? Could it be possible there is an invisible or a special symbol that hangs the import process?

Another track : try to re-initialize the board several times (with whole app cleaning in Settings > Applications > Nextcloud Deck > Storage and Cache > Clear storage). If you succeed once, clone the faulty board with all cards, then remove the old one in database, and try a new initialization. It could eventually ignore the faulty "pattern" (I do a very hazardous guess here).

yep all the 3 boards i have now are new, by new i mean they have been created after i've noticed the problem with the app. The old boards a completely deleted in DB. All the data in DB is only related to those 3 boards.

the weird thing is sometimes, after multiples app cleaning (as you mentioned) it get stuck loading board number 2, sometimes it get stuck loading board number 3 (never board number 1).

You really think it can be at a card level ?

I would be surprised if deck had a structure problem (I mean inconsistency in database). Moreover since you recreated everything.
As nobody else complains about a similar issue, I wonder if the problem could be content related. Give a look at freshest cards you created eventually, their title, descriptions, comments.

100% of my cards only have a title, i never put any comment nor content inside (i'm the only user with basic needs of deck).
i have almost 100 cards (cumulated over the 3 boards). i don't know what can i check then

so i finally decided to export my 3 boards as csv, then delete all boards, uninstall Deck from my nextcloud instance, then reinstall it, and recreate my 3 boards one by one, and now everything work fine.
We will never know what was the cause of my problem.
Thanks anyway for the help :)

Issue can be closed.

As long as it works. 👍

You don't have a button "Close issue" below comment box?

It is closed 😀