Commit 4c523203 authored by Thomas's avatar Thomas
Browse files

fusion

parent 74afdc0a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ public class BasePeertubeActivity extends BaseBarActivity {

                            } else {
                                b.putInt("displayed", 1);
                                b.putParcelable("castedTube", peertube);
                                b.putSerializable("castedTube", peertube);
                                intentBC.putExtras(b);
                                LocalBroadcastManager.getInstance(BasePeertubeActivity.this).sendBroadcast(intentBC);
                                try {
+0 −28
Original line number Diff line number Diff line
@@ -286,19 +286,6 @@
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/settings"
            android:theme="@style/AppThemeBar" />
        <activity
            android:name=".mastodon.activities.InstanceActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/action_about_instance"
            android:theme="@style/AppThemeAlertDialog" />
        <activity
            android:name=".mastodon.activities.InstanceProfileActivity"
            android:excludeFromRecents="true"
            android:theme="@style/AppThemeAlertDialog" />
        <activity
            android:name=".mastodon.activities.ProxyActivity"
            android:excludeFromRecents="true"
            android:theme="@style/AppThemeAlertDialog" />
        <activity
            android:name=".mastodon.activities.HashTagActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -310,11 +297,6 @@
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:theme="@style/Transparent" />

        <activity
            android:name=".mastodon.activities.InstanceHealthActivity"
            android:excludeFromRecents="true"
            android:theme="@style/AppThemeAlertDialog" />

        <activity
            android:name=".mastodon.activities.ReportActivity"
            android:theme="@style/AppThemeBar"
@@ -427,10 +409,6 @@
            android:name=".peertube.activities.PlaylistsActivity"
            android:configChanges="orientation|screenSize"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity
            android:name=".peertube.activities.LocalPlaylistsActivity"
            android:configChanges="orientation|screenSize"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity
            android:name=".peertube.activities.VideosTimelineActivity"
            android:configChanges="orientation|screenSize"
@@ -448,12 +426,6 @@
        <activity
            android:name=".peertube.activities.WebviewActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
            android:name=".peertube.activities.WebviewConnectActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
            android:name=".peertube.activities.MastodonWebviewConnectActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
            android:name=".peertube.activities.LoginActivity"
            android:configChanges="orientation|screenSize"
+86 −0
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@ package app.fedilab.android.mastodon.client.entities.app;

import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import androidx.preference.PreferenceManager;

import com.google.gson.Gson;

import java.io.Serializable;
@@ -29,6 +32,9 @@ import java.util.List;
import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.mastodon.exception.DBException;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.peertube.client.data.AccountData;
import app.fedilab.android.peertube.client.entities.Token;
import app.fedilab.android.peertube.helper.HelperInstance;
import app.fedilab.android.sqlite.Sqlite;

/**
@@ -68,6 +74,21 @@ public class Account extends BaseAccount implements Serializable {
        }
    }

    /**
     * Serialized a Peertube BaseAccount class
     *
     * @param peertube_account {@link AccountData.PeertubeAccount} to serialize
     * @return String serialized account
     */
    public static String peertubeAccountToStringStorage(AccountData.PeertubeAccount peertube_account) {
        Gson gson = new Gson();
        try {
            return gson.toJson(peertube_account);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * Unserialized a Mastodon BaseAccount
     *
@@ -83,6 +104,22 @@ public class Account extends BaseAccount implements Serializable {
        }
    }


    /**
     * Unserialized a Peertube account AccountData.PeertubeAccount
     *
     * @param serializedAccount String serialized account
     * @return {@link AccountData.PeertubeAccount}
     */
    public static AccountData.PeertubeAccount restorePeertubeAccountFromString(String serializedAccount) {
        Gson gson = new Gson();
        try {
            return gson.fromJson(serializedAccount, AccountData.PeertubeAccount.class);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * Returns all BaseAccount in db
     *
@@ -98,6 +135,21 @@ public class Account extends BaseAccount implements Serializable {
        }
    }

    /**
     * Returns all BaseAccount in db
     *
     * @return BaseAccount List<BaseAccount>
     */
    public List<BaseAccount> getPeertubeAccounts() {

        try {
            Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, Sqlite.COL_API + " = 'PEERTUBE' AND " + Sqlite.COL_TOKEN + " IS NOT NULL", null, null, null, Sqlite.COL_INSTANCE + " ASC", null);
            return cursorToListUserWithOwner(c);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * Insert or update a user
     *
@@ -144,6 +196,9 @@ public class Account extends BaseAccount implements Serializable {
        if (account.mastodon_account != null) {
            values.put(Sqlite.COL_ACCOUNT, mastodonAccountToStringStorage(account.mastodon_account));
        }
        if (account.peertube_account != null) {
            values.put(Sqlite.COL_ACCOUNT, peertubeAccountToStringStorage(account.peertube_account));
        }
        values.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
        values.put(Sqlite.COL_UPDATED_AT, Helper.dateToString(new Date()));
        //Inserts token
@@ -181,6 +236,9 @@ public class Account extends BaseAccount implements Serializable {
        if (account.mastodon_account != null) {
            values.put(Sqlite.COL_ACCOUNT, mastodonAccountToStringStorage(account.mastodon_account));
        }
        if (account.peertube_account != null) {
            values.put(Sqlite.COL_ACCOUNT, peertubeAccountToStringStorage(account.peertube_account));
        }
        values.put(Sqlite.COL_UPDATED_AT, Helper.dateToString(new Date()));
        //Inserts token
        try {
@@ -193,6 +251,33 @@ public class Account extends BaseAccount implements Serializable {
        }
    }

    /**
     * Update an account in db
     *
     * @param token {@link Token}
     * @return long - db id
     * @throws DBException exception with database
     */
    public long updatePeertubeToken(Token token) throws DBException {
        ContentValues values = new ContentValues();
        if (token.getRefresh_token() != null) {
            values.put(Sqlite.COL_REFRESH_TOKEN, token.getRefresh_token());
        }
        if (token.getAccess_token() != null)
            values.put(Sqlite.COL_TOKEN, token.getAccess_token());
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
        String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
        String instance = HelperInstance.getLiveInstance(context);
        try {
            return db.update(Sqlite.TABLE_USER_ACCOUNT,
                    values, Sqlite.COL_USER_ID + " =  ? AND " + Sqlite.COL_INSTANCE + " =?",
                    new String[]{userId, instance});
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

    /**
     * Check if a user exists in db
     *
@@ -454,6 +539,7 @@ public class Account extends BaseAccount implements Serializable {
        FRIENDICA,
        PLEROMA,
        PIXELFED,
        PEERTUBE,
        UNKNOWN
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.Date;

import app.fedilab.android.peertube.client.data.AccountData;

/**
 * Class that manages Accounts from database
 * Accounts details are serialized and can be for different softwares
@@ -51,6 +53,8 @@ public class BaseAccount implements Serializable {
    public Date updated_at;
    @SerializedName("mastodon_account")
    public app.fedilab.android.mastodon.client.entities.api.Account mastodon_account;
    @SerializedName("peertube_account")
    public AccountData.PeertubeAccount peertube_account;
    @SerializedName("admin")
    public boolean admin;

+17 −11
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ import static app.fedilab.android.peertube.activities.PeertubeMainActivity.badge

import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -46,15 +45,16 @@ import org.jetbrains.annotations.NotNull;
import app.fedilab.android.R;
import app.fedilab.android.databinding.ActivityAccountPeertubeBinding;
import app.fedilab.android.mastodon.activities.BaseBarActivity;
import app.fedilab.android.mastodon.client.entities.app.Account;
import app.fedilab.android.mastodon.client.entities.app.BaseAccount;
import app.fedilab.android.mastodon.exception.DBException;
import app.fedilab.android.peertube.client.RetrofitPeertubeAPI;
import app.fedilab.android.peertube.client.data.AccountData.Account;
import app.fedilab.android.peertube.client.data.AccountData;
import app.fedilab.android.peertube.fragment.DisplayAccountsFragment;
import app.fedilab.android.peertube.fragment.DisplayChannelsFragment;
import app.fedilab.android.peertube.fragment.DisplayNotificationsFragment;
import app.fedilab.android.peertube.helper.Helper;
import app.fedilab.android.peertube.helper.SwitchAccountHelper;
import app.fedilab.android.peertube.sqlite.AccountDAO;
import app.fedilab.android.peertube.sqlite.Sqlite;


public class AccountActivity extends BaseBarActivity {
@@ -78,16 +78,21 @@ public class AccountActivity extends BaseBarActivity {
                Spanned.SPAN_INCLUSIVE_EXCLUSIVE);


        SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
        SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
        String token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);

        Account account = new AccountDAO(AccountActivity.this, db).getAccountByToken(token);
        if (account == null) {
            Helper.logoutCurrentUser(AccountActivity.this, null);
        BaseAccount baseAccount = null;
        try {
            baseAccount = new Account(AccountActivity.this).getAccountByToken(token);
        } catch (DBException e) {
            e.printStackTrace();
        }
        if (baseAccount == null) {
            finish();
            return;
        }

        AccountData.PeertubeAccount account = baseAccount.peertube_account;

        setTitle(String.format("@%s", account.getUsername()));

@@ -97,11 +102,12 @@ public class AccountActivity extends BaseBarActivity {

        binding.instance.setText(account.getHost());

        BaseAccount finalBaseAccount = baseAccount;
        binding.logoutButton.setOnClickListener(v -> {
            AlertDialog.Builder dialogBuilderLogoutAccount = new AlertDialog.Builder(AccountActivity.this);
            dialogBuilderLogoutAccount.setMessage(getString(R.string.logout_account_confirmation, account.getUsername(), account.getHost()));
            dialogBuilderLogoutAccount.setPositiveButton(R.string.action_logout, (dialog, id) -> {
                Helper.logoutCurrentUser(AccountActivity.this, account);
                Helper.logoutCurrentUser(AccountActivity.this, finalBaseAccount);
                dialog.dismiss();
            });
            dialogBuilderLogoutAccount.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
@@ -215,9 +221,9 @@ public class AccountActivity extends BaseBarActivity {
            binding.remoteAccount.setVisibility(View.VISIBLE);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
                binding.remoteAccount.setText(Html.fromHtml(getString(R.string.remote_account_from, account.getSoftware()), Html.FROM_HTML_MODE_LEGACY));
                binding.remoteAccount.setText(Html.fromHtml(getString(R.string.remote_account_from, baseAccount.software), Html.FROM_HTML_MODE_LEGACY));
            else
                binding.remoteAccount.setText(Html.fromHtml(getString(R.string.remote_account_from, account.getSoftware())));
                binding.remoteAccount.setText(Html.fromHtml(getString(R.string.remote_account_from, baseAccount.software)));
        }
    }

Loading