mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-17 04:00:48 +01:00
improved account type
This commit is contained in:
parent
680deb22c5
commit
c9864ec732
@ -79,12 +79,19 @@ public class ParcelableAccount implements Parcelable {
|
||||
@CursorField(Accounts.ACCOUNT_TYPE)
|
||||
public String account_type;
|
||||
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "account_host")
|
||||
@CursorField(Accounts.ACCOUNT_HOST)
|
||||
public String account_host;
|
||||
|
||||
@Nullable
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "account_user")
|
||||
@CursorField(value = Accounts.ACCOUNT_USER, converter = LoganSquareCursorFieldConverter.class)
|
||||
public ParcelableUser account_user;
|
||||
|
||||
public boolean is_dummy;
|
||||
|
||||
public static final Creator<ParcelableAccount> CREATOR = new Creator<ParcelableAccount>() {
|
||||
public ParcelableAccount createFromParcel(Parcel source) {
|
||||
ParcelableAccount target = new ParcelableAccount();
|
||||
@ -96,7 +103,6 @@ public class ParcelableAccount implements Parcelable {
|
||||
return new ParcelableAccount[size];
|
||||
}
|
||||
};
|
||||
public boolean is_dummy;
|
||||
|
||||
ParcelableAccount() {
|
||||
}
|
||||
@ -118,6 +124,8 @@ public class ParcelableAccount implements Parcelable {
|
||||
", color=" + color +
|
||||
", is_activated=" + is_activated +
|
||||
", account_type='" + account_type + '\'' +
|
||||
", account_host='" + account_host + '\'' +
|
||||
", account_user=" + account_user +
|
||||
", is_dummy=" + is_dummy +
|
||||
'}';
|
||||
}
|
||||
|
@ -171,9 +171,9 @@ public class ParcelableUser implements Parcelable, Comparable<ParcelableUser> {
|
||||
public Extras extras;
|
||||
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "user_type")
|
||||
@CursorField(value = CachedUsers.USER_TYPE)
|
||||
public String user_type;
|
||||
@JsonField(name = "user_host")
|
||||
@CursorField(value = CachedUsers.USER_HOST)
|
||||
public String user_host;
|
||||
|
||||
public static final Creator<ParcelableUser> CREATOR = new Creator<ParcelableUser>() {
|
||||
public ParcelableUser createFromParcel(Parcel source) {
|
||||
|
@ -23,8 +23,6 @@ import android.content.ContentResolver;
|
||||
import android.net.Uri;
|
||||
import android.provider.BaseColumns;
|
||||
|
||||
import org.mariotaku.twidere.TwidereConstants;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public interface TwidereDataStore {
|
||||
|
||||
@ -155,19 +153,22 @@ public interface TwidereDataStore {
|
||||
|
||||
String ACCOUNT_USER = "account_user";
|
||||
|
||||
String[] COLUMNS_NO_CREDENTIALS = {_ID, NAME, SCREEN_NAME, ACCOUNT_ID,
|
||||
PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR, IS_ACTIVATED,
|
||||
SORT_POSITION, ACCOUNT_TYPE, ACCOUNT_USER};
|
||||
String ACCOUNT_HOST = "account_host";
|
||||
|
||||
String[] COLUMNS = {_ID, NAME, SCREEN_NAME, ACCOUNT_ID, AUTH_TYPE,
|
||||
BASIC_AUTH_USERNAME, BASIC_AUTH_PASSWORD, OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY,
|
||||
CONSUMER_SECRET, API_URL_FORMAT, SAME_OAUTH_SIGNING_URL, NO_VERSION_SUFFIX, PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR,
|
||||
IS_ACTIVATED, SORT_POSITION, ACCOUNT_TYPE, ACCOUNT_EXTRAS, ACCOUNT_USER};
|
||||
String[] COLUMNS_NO_CREDENTIALS = {_ID, NAME, SCREEN_NAME, ACCOUNT_ID, PROFILE_IMAGE_URL,
|
||||
PROFILE_BANNER_URL, COLOR, IS_ACTIVATED, SORT_POSITION, ACCOUNT_TYPE, ACCOUNT_USER,
|
||||
ACCOUNT_HOST};
|
||||
|
||||
String[] TYPES = {TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT_NOT_NULL, TYPE_INT_UNIQUE,
|
||||
String[] COLUMNS = {_ID, NAME, SCREEN_NAME, ACCOUNT_ID, AUTH_TYPE, BASIC_AUTH_USERNAME,
|
||||
BASIC_AUTH_PASSWORD, OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET,
|
||||
API_URL_FORMAT, SAME_OAUTH_SIGNING_URL, NO_VERSION_SUFFIX, PROFILE_IMAGE_URL,
|
||||
PROFILE_BANNER_URL, COLOR, IS_ACTIVATED, SORT_POSITION, ACCOUNT_TYPE, ACCOUNT_EXTRAS,
|
||||
ACCOUNT_USER, ACCOUNT_HOST};
|
||||
|
||||
String[] TYPES = {TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT_NOT_NULL, TYPE_INT,
|
||||
TYPE_INT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_BOOLEAN, TYPE_INT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT};
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT};
|
||||
|
||||
}
|
||||
|
||||
@ -299,13 +300,13 @@ public interface TwidereDataStore {
|
||||
|
||||
String EXTRAS = "extras";
|
||||
|
||||
String USER_TYPE = "user_type";
|
||||
String USER_HOST = "user_host";
|
||||
|
||||
String[] COLUMNS = {_ID, USER_ID, CREATED_AT, NAME, SCREEN_NAME, DESCRIPTION_PLAIN, LOCATION,
|
||||
URL, PROFILE_IMAGE_URL, PROFILE_BANNER_URL, IS_PROTECTED, IS_VERIFIED, IS_FOLLOWING,
|
||||
FOLLOWERS_COUNT, FRIENDS_COUNT, STATUSES_COUNT, FAVORITES_COUNT, LISTED_COUNT,
|
||||
MEDIA_COUNT, DESCRIPTION_HTML, DESCRIPTION_EXPANDED, URL_EXPANDED, BACKGROUND_COLOR,
|
||||
LINK_COLOR, TEXT_COLOR, LAST_SEEN, DESCRIPTION_UNESCAPED, EXTRAS, USER_TYPE};
|
||||
LINK_COLOR, TEXT_COLOR, LAST_SEEN, DESCRIPTION_UNESCAPED, EXTRAS, USER_HOST};
|
||||
|
||||
String[] BASIC_COLUMNS = {_ID, USER_ID, NAME, SCREEN_NAME, PROFILE_IMAGE_URL};
|
||||
|
||||
@ -313,7 +314,7 @@ public interface TwidereDataStore {
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_BOOLEAN, TYPE_BOOLEAN,
|
||||
TYPE_BOOLEAN, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_TEXT, TYPE_TEXT,
|
||||
"TEXT NOT NULL DEFAULT '" + TwidereConstants.USER_TYPE_TWITTER_COM + "'"};
|
||||
TYPE_TEXT};
|
||||
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ import static org.mariotaku.twidere.annotation.PreferenceType.STRING;
|
||||
public interface Constants extends TwidereConstants {
|
||||
|
||||
String DATABASES_NAME = "twidere.sqlite";
|
||||
int DATABASES_VERSION = 127;
|
||||
int DATABASES_VERSION = 128;
|
||||
|
||||
int MENU_GROUP_STATUS_EXTENSION = 10;
|
||||
int MENU_GROUP_COMPOSE_EXTENSION = 11;
|
||||
|
@ -1070,8 +1070,9 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList
|
||||
if (values != null && accountType != null) {
|
||||
values.put(Accounts.ACCOUNT_TYPE, accountType.first);
|
||||
values.put(Accounts.ACCOUNT_EXTRAS, accountType.second);
|
||||
values.put(Accounts.ACCOUNT_USER, JsonSerializer.serialize(ParcelableUserUtils.fromUser(user,
|
||||
user.getId()), ParcelableUser.class));
|
||||
final ParcelableUser parcelableUser = ParcelableUserUtils.fromUser(user, user.getId());
|
||||
values.put(Accounts.ACCOUNT_HOST, ParcelableUserUtils.getUserHost(parcelableUser));
|
||||
values.put(Accounts.ACCOUNT_USER, JsonSerializer.serialize(parcelableUser, ParcelableUser.class));
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
@ -54,12 +54,14 @@ public class TwitterConverterFactory extends RestConverter.SimpleFactory<Twitter
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static Object parseOrThrow(Body body, JsonMapper<?> mapper)
|
||||
private static Object parseOrThrow(HttpResponse response, JsonMapper<?> mapper)
|
||||
throws IOException, TwitterException, RestConverter.ConvertException {
|
||||
try {
|
||||
final Object parsed = mapper.parse(body.stream());
|
||||
final Object parsed = mapper.parse(response.getBody().stream());
|
||||
if (parsed == null) {
|
||||
throw new TwitterException("Empty data");
|
||||
final TwitterException exception = new TwitterException("Empty data");
|
||||
exception.setHttpResponse(response);
|
||||
throw exception;
|
||||
}
|
||||
return parsed;
|
||||
} catch (JsonParseException e) {
|
||||
@ -106,8 +108,7 @@ public class TwitterConverterFactory extends RestConverter.SimpleFactory<Twitter
|
||||
|
||||
@Override
|
||||
public Object convert(HttpResponse httpResponse) throws IOException, ConvertException, TwitterException {
|
||||
final Body body = httpResponse.getBody();
|
||||
final Object object = parseOrThrow(body, mapper);
|
||||
final Object object = parseOrThrow(httpResponse, mapper);
|
||||
if (object instanceof TwitterResponse) {
|
||||
((TwitterResponse) object).processResponseHeader(httpResponse);
|
||||
}
|
||||
|
@ -123,6 +123,7 @@ public final class ParcelableUserLoader extends AsyncTaskLoader<SingleResponse<P
|
||||
accountValues.put(Accounts.PROFILE_BANNER_URL, user.profile_banner_url);
|
||||
accountValues.put(Accounts.ACCOUNT_USER, JsonSerializer.serialize(user,
|
||||
ParcelableUser.class));
|
||||
accountValues.put(Accounts.ACCOUNT_HOST, ParcelableUserUtils.getUserHost(user));
|
||||
final String accountWhere = Expression.equals(Accounts.ACCOUNT_ID, userId).getSQL();
|
||||
resolver.update(Accounts.CONTENT_URI, accountValues, accountWhere, null);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.mariotaku.twidere.model.util;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import org.mariotaku.twidere.TwidereConstants;
|
||||
import org.mariotaku.twidere.api.twitter.model.UrlEntity;
|
||||
@ -65,15 +66,20 @@ public class ParcelableUserUtils implements TwidereConstants {
|
||||
extras.profile_image_url_profile_size = user.getProfileImageUrlProfileSize();
|
||||
extras.groups_count = user.getGroupsCount();
|
||||
obj.extras = extras;
|
||||
obj.user_type = getUserType(extras.ostatus_uri);
|
||||
obj.user_host = getUserHost(extras.ostatus_uri);
|
||||
return obj;
|
||||
}
|
||||
|
||||
private static String getUserType(String uri) {
|
||||
public static String getUserHost(@Nullable String uri) {
|
||||
if (uri == null) return USER_TYPE_TWITTER_COM;
|
||||
return PreviewMediaExtractor.getAuthority(uri);
|
||||
}
|
||||
|
||||
public static String getUserHost(ParcelableUser user) {
|
||||
if (user.extras == null) return USER_TYPE_TWITTER_COM;
|
||||
return getUserHost(user.extras.ostatus_uri);
|
||||
}
|
||||
|
||||
public static ParcelableUser fromDirectMessageConversationEntry(final Cursor cursor) {
|
||||
final long accountId = cursor.getLong(DirectMessages.ConversationEntries.IDX_ACCOUNT_ID);
|
||||
final long id = cursor.getLong(DirectMessages.ConversationEntries.IDX_CONVERSATION_ID);
|
||||
|
@ -459,9 +459,9 @@ public final class TwidereDataProvider extends ContentProvider implements Consta
|
||||
final long rowId;
|
||||
if (tableId == TABLE_ID_CACHED_USERS) {
|
||||
final Expression where = Expression.and(Expression.equalsArgs(CachedUsers.USER_ID),
|
||||
Expression.equalsArgs(CachedUsers.USER_TYPE));
|
||||
Expression.equalsArgs(CachedUsers.USER_HOST));
|
||||
final String[] whereArgs = {values.getAsString(CachedUsers.USER_ID),
|
||||
values.getAsString(CachedUsers.USER_TYPE)};
|
||||
values.getAsString(CachedUsers.USER_HOST)};
|
||||
mDatabaseWrapper.update(table, values, where.getSQL(), whereArgs);
|
||||
rowId = mDatabaseWrapper.insertWithOnConflict(table, null, values,
|
||||
SQLiteDatabase.CONFLICT_IGNORE);
|
||||
|
@ -82,7 +82,7 @@ public final class TwidereSQLiteOpenHelper extends SQLiteOpenHelper implements C
|
||||
db.execSQL(createTable(Activities.ByFriends.TABLE_NAME, Activities.ByFriends.COLUMNS, Activities.ByFriends.TYPES, true));
|
||||
db.execSQL(createTable(Drafts.TABLE_NAME, Drafts.COLUMNS, Drafts.TYPES, true));
|
||||
db.execSQL(createTable(CachedUsers.TABLE_NAME, CachedUsers.COLUMNS, CachedUsers.TYPES, true,
|
||||
createConflictReplaceConstraint(CachedUsers.USER_ID, CachedUsers.USER_TYPE)));
|
||||
createConflictReplaceConstraint(CachedUsers.USER_ID, CachedUsers.USER_HOST)));
|
||||
db.execSQL(createTable(CachedStatuses.TABLE_NAME, CachedStatuses.COLUMNS, CachedStatuses.TYPES, true));
|
||||
db.execSQL(createTable(CachedHashtags.TABLE_NAME, CachedHashtags.COLUMNS, CachedHashtags.TYPES, true));
|
||||
db.execSQL(createTable(CachedRelationships.TABLE_NAME, CachedRelationships.COLUMNS, CachedRelationships.TYPES, true,
|
||||
@ -233,7 +233,7 @@ public final class TwidereSQLiteOpenHelper extends SQLiteOpenHelper implements C
|
||||
Activities.ByFriends.TYPES, true, null);
|
||||
safeUpgrade(db, Drafts.TABLE_NAME, Drafts.COLUMNS, Drafts.TYPES, false, draftsAlias);
|
||||
safeUpgrade(db, CachedUsers.TABLE_NAME, CachedUsers.COLUMNS, CachedUsers.TYPES, true, null,
|
||||
createConflictReplaceConstraint(CachedUsers.USER_ID, CachedUsers.USER_TYPE));
|
||||
createConflictReplaceConstraint(CachedUsers.USER_ID, CachedUsers.USER_HOST));
|
||||
safeUpgrade(db, CachedStatuses.TABLE_NAME, CachedStatuses.COLUMNS, CachedStatuses.TYPES, true, null);
|
||||
safeUpgrade(db, CachedHashtags.TABLE_NAME, CachedHashtags.COLUMNS, CachedHashtags.TYPES, true, null);
|
||||
safeUpgrade(db, CachedRelationships.TABLE_NAME, CachedRelationships.COLUMNS, CachedRelationships.TYPES, true, null,
|
||||
|
Loading…
x
Reference in New Issue
Block a user