Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29c6ce7a authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽
Browse files

feat: enable cookie sharing in DAV requests

- replace nc-android-lib with eOS fork to support session sharing
- refactor DavClientProvider; instead of maintaining singleton client ourselves, use nc-android-lib functionality
- update DavClient instance after every successful usage
parent db9a5178
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ android {
}

dependencies {
    implementation 'com.github.nextcloud:android-library:2.13.0'
    implementation 'foundation.e:Nextcloud-Android-Library:1.0.1-alpha'
    implementation "commons-httpclient:commons-httpclient:3.1@jar"
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    api 'androidx.annotation:annotation:1.6.0'
+4 −0
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ public class AccountUserInfoWorker extends Worker {
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .preload();
                    ViewUtils.updateWidgetView(mContext);
                    DavClientProvider.getInstance().saveAccounts(mContext);
                    return Result.success();
                } else {
                    return Result.retry();
@@ -235,6 +236,9 @@ public class AccountUserInfoWorker extends Worker {
        }
        accountManager.setUserData(account, ACCOUNT_DATA_ALIAS_KEY, aliases);
        Timber.d("fetchAliases(): success");

        DavClientProvider.getInstance().saveAccounts(mContext);

        return true;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ class AccountAddedReceiver() : BroadcastReceiver() {
        }

        if (!isExistingAccount(accountName, accountType, context)) {
            Timber.w("No account exist for username: %s ", accountType, accountName)
            Timber.w("No account exist for type: %s, username: %s", accountType, accountName)
            return false
        }
        return true
+20 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ package foundation.e.drive.account.receivers;
import static foundation.e.drive.utils.AppConstants.INITIAL_FOLDER_NUMBER;
import static foundation.e.drive.utils.AppConstants.SETUP_COMPLETED;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.annotation.SuppressLint;
import android.app.NotificationManager;
@@ -56,7 +57,7 @@ public class AccountRemoveCallbackReceiver extends BroadcastReceiver {
        cleanSharedPreferences(applicationContext, preferences);
        removeCachedFiles(applicationContext);
        deleteNotificationChannels(applicationContext);
        DavClientProvider.getInstance().cleanUp();
        clearDavClient(intent, applicationContext);

        ViewUtils.updateWidgetView(applicationContext);
    }
@@ -78,6 +79,24 @@ public class AccountRemoveCallbackReceiver extends BroadcastReceiver {
        }
    }

    private void clearDavClient(@NonNull Intent intent, @NonNull Context context) {
        if (intent.getExtras() == null) {
            return;
        }

        final String accountType = intent.getExtras().getString(AccountManager.KEY_ACCOUNT_TYPE);
        final String accountName = intent.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);

        AccountManager accountManager = AccountManager.get(context);

        for (Account account : accountManager.getAccountsByType(accountType)) {
            if (account.name.equals(accountName)) {
                DavClientProvider.getInstance().cleanUp(context, account);
                break;
            }
        }
    }

    private boolean shouldProceedWithRemoval(@NonNull Intent intent, @NonNull SharedPreferences preferences, @NonNull Context context) {
        if (isInvalidAction(intent) || intent.getExtras() == null) {
            Timber.w("Invalid account removal request");
+3 −0
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ public class RootFolderSetupWorker extends Worker {
                    new CreateFolderRemoteOperation(syncedFolder.getRemoteFolder(), true);

            @SuppressWarnings("deprecation") final RemoteOperationResult result = mkcolRequest.execute(client);

            DavClientProvider.getInstance().saveAccounts(context);

            if (result.isSuccess() || result.getCode() == RemoteOperationResult.ResultCode.FOLDER_ALREADY_EXISTS) {
                DbHelper.insertSyncedFolder(syncedFolder, context);
                return Result.success();
Loading