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

Commit 70831be8 authored by David Luhmer's avatar David Luhmer
Browse files

Refactoring (split code into packages / add custom exception handling)

parent 8676b563
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
	More information here: https://github.com/abeluck/android-streams-ipc
*/

package de.luhmer.owncloud.accountimporter.helper;
package de.luhmer.owncloud.accountimporter.aidl;

interface IInputStreamService {
    ParcelFileDescriptor performNextcloudRequest(in ParcelFileDescriptor input);
+28 −18
Original line number Diff line number Diff line
package de.luhmer.owncloud.accountimporter.helper;
package de.luhmer.owncloud.accountimporter;

import android.accounts.Account;
import android.accounts.AccountManager;
@@ -6,10 +6,12 @@ import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.widget.Toast;

import java.io.IOException;
import java.util.ArrayList;
@@ -20,7 +22,9 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import static android.content.Context.MODE_PRIVATE;
import de.luhmer.owncloud.accountimporter.exceptions.NextcloudFilesAppNotInstalledException;
import de.luhmer.owncloud.accountimporter.helper.AsyncTaskHelper;
import de.luhmer.owncloud.accountimporter.model.SingleSignOnAccount;

/**
 *  Nextcloud SingleSignOn
@@ -47,28 +51,34 @@ public class AccountImporter {
    private static final String PREF_FILE_NAME = "PrefNextcloudAccount";
    private static final String PREF_ACCOUNT_STRING = "PREF_ACCOUNT_STRING";

    private static final String AUTH_TOKEN = "NextcloudSSO";

    public static final int CHOOSE_ACCOUNT_SSO = 4242;

    public static boolean AccountsToImportAvailable(Context context) {
        return FindAccounts(context).size() > 0;
    }

    //TODO add multi account support
    public static Account GetCurrentAccount(Context context) {
        SharedPreferences preferences = context.getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
        String accountName = preferences.getString(PREF_ACCOUNT_STRING, "");
        return GetAccountForName(context, accountName);
    }

    //TODO add multi account support
    public static SingleSignOnAccount GetCurrentSingleAccount(Context context) throws AuthenticatorException, OperationCanceledException, IOException {
        return GetAuthToken(context, GetCurrentAccount(context));
    public static void PickNewAccount(android.support.v4.app.Fragment fragment) throws NextcloudFilesAppNotInstalledException {
        if(AppInstalledOrNot(fragment.getContext(), "com.nextcloud.client")) {
            Intent intent = AccountManager.newChooseAccountIntent(null, null, new String[]{"nextcloud"},
                    true, null, null, null, null);
            fragment.startActivityForResult(intent, CHOOSE_ACCOUNT_SSO);
        } else {
            throw new NextcloudFilesAppNotInstalledException();
        }

    //TODO add multi account support
    public static void SetCurrentAccount(Context context, Account account) {
        SharedPreferences preferences = context.getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
        preferences.edit().putString(PREF_ACCOUNT_STRING, account.name).commit();
    }

    private static boolean AppInstalledOrNot(Context context, String uri) {
        PackageManager pm = context.getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }
        return false;
    }

    // Find all currently installed nextcloud accounts on the phone
    private static List<Account> FindAccounts(Context context) {
@@ -84,7 +94,7 @@ public class AccountImporter {
        return accountsAvailable;
    }

    private static final String AUTH_TOKEN = "NextcloudSSO";



    public static Account GetAccountForName(Context context, String name) {
+1 −1
Original line number Diff line number Diff line
package de.luhmer.owncloud.accountimporter.helper;
package de.luhmer.owncloud.accountimporter.aidl;

/**
 *  Nextcloud SingleSignOn
+1 −1
Original line number Diff line number Diff line
package de.luhmer.owncloud.accountimporter.helper;
package de.luhmer.owncloud.accountimporter.aidl;

import java.io.Serializable;
import java.util.HashMap;
+3 −1
Original line number Diff line number Diff line
package de.luhmer.owncloud.accountimporter.helper;
package de.luhmer.owncloud.accountimporter.aidl;

import android.os.ParcelFileDescriptor;
import android.util.Log;
@@ -7,6 +7,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import de.luhmer.owncloud.accountimporter.aidl.IThreadListener;

/**
 *  Nextcloud SingleSignOn
 *
Loading