added function to add users to lists
This commit is contained in:
parent
72321d62b4
commit
cba5c96c78
|
@ -1,10 +1,14 @@
|
|||
package org.nuclearfog.twidda.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.SearchView.OnQueryTextListener;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
|
@ -14,18 +18,26 @@ import com.google.android.material.tabs.TabLayout.Tab;
|
|||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.FragmentAdapter;
|
||||
import org.nuclearfog.twidda.backend.UserListManager;
|
||||
import org.nuclearfog.twidda.backend.UserListManager.ListManagerCallback;
|
||||
import org.nuclearfog.twidda.backend.engine.EngineException;
|
||||
import org.nuclearfog.twidda.backend.utils.FontTool;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.UserListManager.Action.ADD_USER;
|
||||
|
||||
/**
|
||||
* Activity to show an user list, members and tweets
|
||||
*/
|
||||
public class ListDetail extends AppCompatActivity implements OnTabSelectedListener {
|
||||
public class ListDetail extends AppCompatActivity implements OnTabSelectedListener, OnQueryTextListener, ListManagerCallback {
|
||||
|
||||
public static final String KEY_LISTDETAIL_ID = "list-id";
|
||||
public static final String KEY_LISTDETAIL_TITLE = "list-title";
|
||||
public static final String KEY_LISTDETAIL_DESCR = "list-descr";
|
||||
|
||||
private UserListManager listAsync;
|
||||
|
||||
private FragmentAdapter adapter;
|
||||
private TabLayout tablayout;
|
||||
private ViewPager pager;
|
||||
|
@ -69,6 +81,17 @@ public class ListDetail extends AppCompatActivity implements OnTabSelectedListen
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu m) {
|
||||
getMenuInflater().inflate(R.menu.userlist, m);
|
||||
MenuItem search = m.findItem(R.id.add_user);
|
||||
SearchView addUser = (SearchView) search.getActionView();
|
||||
addUser.setQueryHint(getString(R.string.list_add_user));
|
||||
addUser.setOnQueryTextListener(this);
|
||||
return super.onCreateOptionsMenu(m);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (tablayout.getSelectedTabPosition() > 0) {
|
||||
|
@ -93,4 +116,35 @@ public class ListDetail extends AppCompatActivity implements OnTabSelectedListen
|
|||
@Override
|
||||
public void onTabReselected(Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
if (listAsync == null || listAsync.getStatus() != RUNNING) {
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null && param.containsKey(KEY_LISTDETAIL_ID)) {
|
||||
long id = param.getLong(KEY_LISTDETAIL_ID);
|
||||
listAsync = new UserListManager(id, ADD_USER, getApplicationContext(), this);
|
||||
listAsync.execute(query);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextChange(String newText) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onFailure(EngineException err) {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package org.nuclearfog.twidda.backend;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import org.nuclearfog.twidda.backend.engine.EngineException;
|
||||
import org.nuclearfog.twidda.backend.engine.TwitterEngine;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class UserListManager extends AsyncTask<String, Void, Boolean> {
|
||||
|
||||
public enum Action {
|
||||
ADD_USER,
|
||||
DEL_USER
|
||||
}
|
||||
|
||||
private final TwitterEngine mTwitter;
|
||||
private final WeakReference<ListManagerCallback> callback;
|
||||
|
||||
private final long listId;
|
||||
private final Action mode;
|
||||
private EngineException err;
|
||||
|
||||
|
||||
public UserListManager(long listId, Action mode, Context c, ListManagerCallback callback) {
|
||||
super();
|
||||
this.listId = listId;
|
||||
this.mode = mode;
|
||||
mTwitter = TwitterEngine.getInstance(c);
|
||||
this.callback = new WeakReference<>(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(String... strings) {
|
||||
try {
|
||||
switch (mode) {
|
||||
case ADD_USER:
|
||||
mTwitter.addUserToList(listId, strings);
|
||||
break;
|
||||
|
||||
case DEL_USER:
|
||||
mTwitter.delUserFromList(listId, strings[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
} catch (EngineException err) {
|
||||
this.err = err;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if (callback.get() != null) {
|
||||
if (success) {
|
||||
callback.get().onSuccess();
|
||||
} else {
|
||||
callback.get().onFailure(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface ListManagerCallback {
|
||||
|
||||
void onSuccess();
|
||||
|
||||
void onFailure(EngineException err);
|
||||
}
|
||||
}
|
|
@ -1077,6 +1077,36 @@ public class TwitterEngine {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* adds user to an user list
|
||||
*
|
||||
* @param listId I of the list
|
||||
* @param usernames screen names of the users
|
||||
* @throws EngineException if access is unavailable
|
||||
*/
|
||||
public void addUserToList(long listId, String[] usernames) throws EngineException {
|
||||
try {
|
||||
twitter.createUserListMembers(listId, usernames);
|
||||
} catch (TwitterException err) {
|
||||
throw new EngineException(err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* removes an user from user list
|
||||
*
|
||||
* @param listId I of the list
|
||||
* @param username screen names of an user
|
||||
* @throws EngineException if access is unavailable
|
||||
*/
|
||||
public void delUserFromList(long listId, String username) throws EngineException {
|
||||
try {
|
||||
twitter.destroyUserListMember(listId, username);
|
||||
} catch (TwitterException err) {
|
||||
throw new EngineException(err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* convert #twitter4j.User to TwitterUser List
|
||||
*
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/add_user"
|
||||
android:title="@string/list_add_user"
|
||||
android:iconifiedByDefault="false"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="always" />
|
||||
</menu>
|
|
@ -163,4 +163,5 @@
|
|||
<string name="userlist_error_empty_text">Title und Beschreibung dürfen nicht leer sein!</string>
|
||||
<string name="info_list_updated">Liste wurde aktualisiert</string>
|
||||
<string name="info_list_created">Liste wurde erstellt</string>
|
||||
<string name="list_add_user">Nutzer hinzufügen</string>
|
||||
</resources>
|
|
@ -169,4 +169,5 @@
|
|||
<string name="userlist_error_empty_text">Title and description must be set!</string>
|
||||
<string name="info_list_updated">Userlist updated</string>
|
||||
<string name="info_list_created">Userlist created</string>
|
||||
<string name="list_add_user">add user to list</string>
|
||||
</resources>
|
Loading…
Reference in New Issue