Some fixes
This commit is contained in:
parent
36073d340d
commit
b932ed2c13
|
@ -15,6 +15,7 @@ package app.fedilab.fedilabtube;
|
|||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
|
|
@ -799,7 +799,7 @@ public class MainActivity extends AppCompatActivity implements ChromeCastsListen
|
|||
if (typeOfConnection == SURFING) {
|
||||
SwitchAccountHelper.switchDialog(MainActivity.this, false);
|
||||
} else {
|
||||
if (Helper.isLoggedIn(MainActivity.this)) {
|
||||
if (Helper.canMakeAction(MainActivity.this)) {
|
||||
intent = new Intent(MainActivity.this, AccountActivity.class);
|
||||
} else {
|
||||
intent = new Intent(MainActivity.this, LoginActivity.class);
|
||||
|
|
|
@ -69,13 +69,15 @@ public class RetrofitMastodonAPI {
|
|||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
editor.putString(Helper.PREF_KEY_ID, account.getId());
|
||||
editor.putString(Helper.PREF_KEY_NAME, account.getUsername());
|
||||
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);
|
||||
editor.putString(Helper.PREF_SOFTWARE, software);
|
||||
editor.apply();
|
||||
if (userExists)
|
||||
if (userExists) {
|
||||
new MastodonAccountDAO(activity, db).updateAccountCredential(account);
|
||||
else {
|
||||
if (account.getUsername() != null && account.getCreatedAt() != null)
|
||||
} else {
|
||||
if (account.getUsername() != null && account.getCreatedAt() != null) {
|
||||
new MastodonAccountDAO(activity, db).insertAccount(account);
|
||||
}
|
||||
}
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> {
|
||||
|
|
|
@ -40,7 +40,7 @@ public class MastodonAccount {
|
|||
};
|
||||
@SerializedName("avatar")
|
||||
private String avatar;
|
||||
@SerializedName("createdAt")
|
||||
@SerializedName("created_at")
|
||||
private Date createdAt;
|
||||
@SerializedName("note")
|
||||
private String description;
|
||||
|
@ -54,7 +54,7 @@ public class MastodonAccount {
|
|||
private String id;
|
||||
@SerializedName("username")
|
||||
private String username;
|
||||
@SerializedName("updatedAt")
|
||||
@SerializedName("updated_at")
|
||||
private Date updatedAt;
|
||||
@SerializedName("url")
|
||||
private String url;
|
||||
|
|
|
@ -20,10 +20,7 @@ import android.content.SharedPreferences;
|
|||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import app.fedilab.fedilabtube.client.entities.MastodonAccount.Account;
|
||||
import app.fedilab.fedilabtube.client.entities.Token;
|
||||
import app.fedilab.fedilabtube.helper.Helper;
|
||||
|
@ -202,73 +199,7 @@ public class MastodonAccountDAO {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns last used account
|
||||
*
|
||||
* @return Account
|
||||
*/
|
||||
public Account getLastUsedAccount() {
|
||||
|
||||
try {
|
||||
Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, Sqlite.COL_OAUTHTOKEN + " != 'null'", null, null, null, Sqlite.COL_UPDATED_AT + " DESC", "1");
|
||||
return cursorToUser(c);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns all Account in db
|
||||
*
|
||||
* @return Account List<Account>
|
||||
*/
|
||||
public List<Account> getAllAccount() {
|
||||
|
||||
try {
|
||||
Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, null, null, null, null, Sqlite.COL_INSTANCE + " ASC", null);
|
||||
return cursorToListUser(c);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an Account by token
|
||||
*
|
||||
* @param token String
|
||||
* @return Account
|
||||
*/
|
||||
public Account getAccountByToken(String token) {
|
||||
|
||||
try {
|
||||
Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, Sqlite.COL_OAUTHTOKEN + " = \"" + token + "\"", null, null, null, null, "1");
|
||||
return cursorToUser(c);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an Account by id and instance
|
||||
*
|
||||
* @param id String
|
||||
* @param instance String
|
||||
* @return Account
|
||||
*/
|
||||
public Account getAccountByIdInstance(String id, String instance) {
|
||||
|
||||
try {
|
||||
Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, Sqlite.COL_USER_ID + " = \"" + id + "\" AND " + Sqlite.COL_INSTANCE + " = \"" + instance + "\"", null, null, null, null, "1");
|
||||
return cursorToUser(c);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if the current user is already stored in data base
|
||||
|
@ -286,84 +217,5 @@ public class MastodonAccountDAO {
|
|||
}
|
||||
|
||||
|
||||
/***
|
||||
* Method to hydrate an Account from database
|
||||
* @param c Cursor
|
||||
* @return Account
|
||||
*/
|
||||
private Account cursorToUser(Cursor c) {
|
||||
//No element found
|
||||
|
||||
if (c.getCount() == 0) {
|
||||
c.close();
|
||||
return null;
|
||||
}
|
||||
//Take the first element
|
||||
c.moveToFirst();
|
||||
//New user
|
||||
Account account = new Account();
|
||||
account.setId(c.getString(c.getColumnIndex(Sqlite.COL_USER_ID)));
|
||||
account.setUsername(c.getString(c.getColumnIndex(Sqlite.COL_USERNAME)));
|
||||
account.setDisplayName(c.getString(c.getColumnIndex(Sqlite.COL_DISPLAYED_NAME)));
|
||||
account.setFollowersCount(c.getInt(c.getColumnIndex(Sqlite.COL_FOLLOWERS_COUNT)));
|
||||
account.setFollowingCount(c.getInt(c.getColumnIndex(Sqlite.COL_FOLLOWING_COUNT)));
|
||||
account.setDescription(c.getString(c.getColumnIndex(Sqlite.COL_NOTE)));
|
||||
account.setUrl(c.getString(c.getColumnIndex(Sqlite.COL_URL)));
|
||||
account.setAvatar(c.getString(c.getColumnIndex(Sqlite.COL_AVATAR)));
|
||||
account.setUpdatedAt(Helper.stringToDate(context, c.getString(c.getColumnIndex(Sqlite.COL_UPDATED_AT))));
|
||||
account.setCreatedAt(Helper.stringToDate(context, c.getString(c.getColumnIndex(Sqlite.COL_CREATED_AT))));
|
||||
account.setHost(c.getString(c.getColumnIndex(Sqlite.COL_INSTANCE)));
|
||||
account.setToken(c.getString(c.getColumnIndex(Sqlite.COL_OAUTHTOKEN)));
|
||||
account.setSoftware(c.getString(c.getColumnIndex(Sqlite.COL_SOFTWARE)));
|
||||
account.setClient_id(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_ID)));
|
||||
account.setClient_secret(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_SECRET)));
|
||||
account.setRefresh_token(c.getString(c.getColumnIndex(Sqlite.COL_REFRESH_TOKEN)));
|
||||
//Close the cursor
|
||||
c.close();
|
||||
|
||||
//User is returned
|
||||
return account;
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* Method to hydrate an Accounts from database
|
||||
* @param c Cursor
|
||||
* @return List<Account>
|
||||
*/
|
||||
private List<Account> cursorToListUser(Cursor c) {
|
||||
//No element found
|
||||
if (c.getCount() == 0) {
|
||||
c.close();
|
||||
return null;
|
||||
}
|
||||
List<Account> accounts = new ArrayList<>();
|
||||
while (c.moveToNext()) {
|
||||
//New user
|
||||
Account account = new Account();
|
||||
account.setId(c.getString(c.getColumnIndex(Sqlite.COL_USER_ID)));
|
||||
account.setUsername(c.getString(c.getColumnIndex(Sqlite.COL_USERNAME)));
|
||||
account.setDisplayName(c.getString(c.getColumnIndex(Sqlite.COL_DISPLAYED_NAME)));
|
||||
account.setFollowersCount(c.getInt(c.getColumnIndex(Sqlite.COL_FOLLOWERS_COUNT)));
|
||||
account.setFollowingCount(c.getInt(c.getColumnIndex(Sqlite.COL_FOLLOWING_COUNT)));
|
||||
account.setDescription(c.getString(c.getColumnIndex(Sqlite.COL_NOTE)));
|
||||
account.setUrl(c.getString(c.getColumnIndex(Sqlite.COL_URL)));
|
||||
account.setAvatar(c.getString(c.getColumnIndex(Sqlite.COL_AVATAR)));
|
||||
account.setUpdatedAt(Helper.stringToDate(context, c.getString(c.getColumnIndex(Sqlite.COL_UPDATED_AT))));
|
||||
account.setCreatedAt(Helper.stringToDate(context, c.getString(c.getColumnIndex(Sqlite.COL_CREATED_AT))));
|
||||
account.setHost(c.getString(c.getColumnIndex(Sqlite.COL_INSTANCE)));
|
||||
account.setToken(c.getString(c.getColumnIndex(Sqlite.COL_OAUTHTOKEN)));
|
||||
account.setSoftware(c.getString(c.getColumnIndex(Sqlite.COL_SOFTWARE)));
|
||||
account.setClient_id(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_ID)));
|
||||
account.setClient_secret(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_SECRET)));
|
||||
account.setRefresh_token(c.getString(c.getColumnIndex(Sqlite.COL_REFRESH_TOKEN)));
|
||||
accounts.add(account);
|
||||
}
|
||||
//Close the cursor
|
||||
c.close();
|
||||
//Users list is returned
|
||||
return accounts;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import androidx.lifecycle.AndroidViewModel;
|
|||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import app.fedilab.fedilabtube.AccountActivity;
|
||||
import app.fedilab.fedilabtube.client.APIResponse;
|
||||
import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI;
|
||||
import app.fedilab.fedilabtube.client.data.AccountData;
|
||||
|
|
|
@ -16,6 +16,7 @@ package app.fedilab.fedilabtube.viewmodel;
|
|||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
|
Loading…
Reference in New Issue