Search in sources :

Example 11 with User

use of com.github.moko256.latte.client.base.entity.User in project twicalico by moko256.

the class MainActivity method updateAccountsList.

private void updateAccountsList() {
    disposable.add(Single.create(singleSubscriber -> {
        try {
            List<AccessToken> accessTokens = accountsModel.getAccessTokens();
            ArrayList<User> users = new ArrayList<>(accessTokens.size());
            for (AccessToken accessToken : accessTokens) {
                long id = accessToken.getUserId();
                CachedUsersSQLiteOpenHelper userHelper = new CachedUsersSQLiteOpenHelper(getApplicationContext(), accessToken);
                User user = userHelper.getCachedUser(id);
                if (user == null) {
                    try {
                        user = ((GlobalApplication) getApplication()).createApiClientInstance(accessToken).verifyCredentials();
                        userHelper.addCachedUser(user);
                    } catch (Throwable e) {
                        e.printStackTrace();
                    } finally {
                        userHelper.close();
                    }
                }
                users.add(user);
            }
            singleSubscriber.onSuccess(new Pair<>(users, accessTokens));
        } catch (Throwable e) {
            singleSubscriber.tryOnError(e);
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(o -> {
        @SuppressWarnings("unchecked") Pair<ArrayList<User>, ArrayList<AccessToken>> pairs = (Pair<ArrayList<User>, ArrayList<AccessToken>>) o;
        adapter.clearImages();
        adapter.addAndUpdate(pairs.first, pairs.second);
        adapter.setSelectedPosition(client.getAccessToken());
        adapter.notifyDataSetChanged();
    }, Throwable::printStackTrace));
}
Also used : LinearLayout(android.widget.LinearLayout) Bundle(android.os.Bundle) NonNull(androidx.annotation.NonNull) ImageView(android.widget.ImageView) AccountsModel(com.github.moko256.twitlatte.model.AccountsModel) AppCompatActivity(androidx.appcompat.app.AppCompatActivity) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) DrawableTransitionOptions(com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions) ActivityOptionsCompat(androidx.core.app.ActivityOptionsCompat) RequestManager(com.bumptech.glide.RequestManager) ActionBarDrawerToggle(androidx.appcompat.app.ActionBarDrawerToggle) Fragment(androidx.fragment.app.Fragment) View(android.view.View) ListEntry(com.github.moko256.latte.client.base.entity.ListEntry) EmojiToTextViewSetter(com.github.moko256.twitlatte.view.EmojiToTextViewSetter) Schedulers(io.reactivex.schedulers.Schedulers) RecyclerView(androidx.recyclerview.widget.RecyclerView) ContextCompat(androidx.core.content.ContextCompat) MediaUrlConverter(com.github.moko256.latte.client.base.MediaUrlConverter) TabLayout(com.google.android.material.tabs.TabLayout) ViewGroup(android.view.ViewGroup) Objects(java.util.Objects) DpToPxKt(com.github.moko256.twitlatte.view.DpToPxKt) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) TextView(android.widget.TextView) Nullable(androidx.annotation.Nullable) KEY_ALWAYS_CLOSE_APP(com.github.moko256.twitlatte.repository.PreferenceRepositoryKt.KEY_ALWAYS_CLOSE_APP) Toolbar(androidx.appcompat.widget.Toolbar) Emoji(com.github.moko256.latte.client.base.entity.Emoji) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) DrawerLayout(androidx.drawerlayout.widget.DrawerLayout) KeyEvent(android.view.KeyEvent) AlertDialog(androidx.appcompat.app.AlertDialog) NavigationView(com.google.android.material.navigation.NavigationView) User(com.github.moko256.latte.client.base.entity.User) Pair(android.util.Pair) Intent(android.content.Intent) Single(io.reactivex.Single) MenuItem(android.view.MenuItem) ArrayList(java.util.ArrayList) TwitterStringUtils(com.github.moko256.twitlatte.text.TwitterStringUtils) Toast(android.widget.Toast) Menu(android.view.Menu) Build(android.os.Build) FragmentManager(androidx.fragment.app.FragmentManager) GravityCompat(androidx.core.view.GravityCompat) Client(com.github.moko256.twitlatte.entity.Client) VerifyCredentialOnSubscribe(com.github.moko256.twitlatte.rx.VerifyCredentialOnSubscribe) KEY_ACCOUNT_KEY(com.github.moko256.twitlatte.repository.PreferenceRepositoryKt.KEY_ACCOUNT_KEY) CachedUsersSQLiteOpenHelper(com.github.moko256.twitlatte.database.CachedUsersSQLiteOpenHelper) AccessToken(com.github.moko256.latte.client.base.entity.AccessToken) Glide(com.bumptech.glide.Glide) FragmentPagerAdapter(com.github.moko256.twitlatte.widget.FragmentPagerAdapter) User(com.github.moko256.latte.client.base.entity.User) AccessToken(com.github.moko256.latte.client.base.entity.AccessToken) CachedUsersSQLiteOpenHelper(com.github.moko256.twitlatte.database.CachedUsersSQLiteOpenHelper) ArrayList(java.util.ArrayList) Pair(android.util.Pair)

Example 12 with User

use of com.github.moko256.latte.client.base.entity.User in project twicalico by moko256.

the class UsersAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
    User item = userCache.get(data.get(i));
    if (item != null) {
        requestManager.load(converter.convertProfileIconUriBySize(item, DpToPxKt.dpToPx(context, 40))).circleCrop().transition(DrawableTransitionOptions.withCrossFade()).into(viewHolder.userUserImage);
        CharSequence userNameText = TwitterStringUtils.plusUserMarks(item.getName(), viewHolder.userUserName, item.isProtected(), item.isVerified());
        viewHolder.userUserName.setText(userNameText);
        Emoji[] userNameEmojis = item.getEmojis();
        if (userNameEmojis != null) {
            viewHolder.disposable.add(new EmojiToTextViewSetter(requestManager, viewHolder.userUserName, userNameText, userNameEmojis));
        }
        viewHolder.userUserId.setText(TwitterStringUtils.plusAtMark(item.getScreenName()));
        viewHolder.itemView.setOnClickListener(v -> {
            ActivityOptionsCompat animation = ActivityOptionsCompat.makeSceneTransitionAnimation(((Activity) context), viewHolder.userUserImage, "icon_image");
            context.startActivity(GlobalApplicationKt.setAccountKeyForActivity(ShowUserActivity.getIntent(context, item.getId()), ((Activity) context)), animation.toBundle());
        });
    }
}
Also used : User(com.github.moko256.latte.client.base.entity.User) EmojiToTextViewSetter(com.github.moko256.twitlatte.view.EmojiToTextViewSetter) Emoji(com.github.moko256.latte.client.base.entity.Emoji) Activity(android.app.Activity) ActivityOptionsCompat(androidx.core.app.ActivityOptionsCompat)

Example 13 with User

use of com.github.moko256.latte.client.base.entity.User in project twicalico by moko256.

the class CachedUsersSQLiteOpenHelperTest method updateCacheTest.

private void updateCacheTest() {
    helper.addCachedUser(generateUser(TEST_DUMMY_USER_ID_1, TEST_DUMMY_USER_NAME_1));
    User updatedStatusResult = helper.getCachedUser(TEST_DUMMY_USER_ID_1);
    assertEquals(updatedStatusResult.getName(), TEST_DUMMY_USER_NAME_1);
}
Also used : User(com.github.moko256.latte.client.base.entity.User)

Aggregations

User (com.github.moko256.latte.client.base.entity.User)7 View (android.view.View)6 TextView (android.widget.TextView)6 Intent (android.content.Intent)5 Bundle (android.os.Bundle)5 Menu (android.view.Menu)5 MenuItem (android.view.MenuItem)5 ImageView (android.widget.ImageView)5 Emoji (com.github.moko256.latte.client.base.entity.Emoji)4 ArrayList (java.util.ArrayList)4 RecyclerView (androidx.recyclerview.widget.RecyclerView)3 EmojiToTextViewSetter (com.github.moko256.twitlatte.view.EmojiToTextViewSetter)3 Context (android.content.Context)2 SharedPreferences (android.content.SharedPreferences)2 PreferenceManager (android.preference.PreferenceManager)2 NonNull (android.support.annotation.NonNull)2 NavigationView (android.support.design.widget.NavigationView)2 TabLayout (android.support.design.widget.TabLayout)2 ActivityOptionsCompat (android.support.v4.app.ActivityOptionsCompat)2 Fragment (android.support.v4.app.Fragment)2