aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2014-06-10 19:24:00 -0700
committerScott Jackson <daneren2005@gmail.com>2014-06-10 19:24:00 -0700
commitf064378307cf651c1f0cb82a36b81099b4db7401 (patch)
tree5e56d4b9c223f193aa652180dc41dc41c4046b53 /src
parent42843c2b45668064aee7ce985bb941acb54f5eac (diff)
downloaddsub-f064378307cf651c1f0cb82a36b81099b4db7401.tar.gz
dsub-f064378307cf651c1f0cb82a36b81099b4db7401.tar.bz2
dsub-f064378307cf651c1f0cb82a36b81099b4db7401.zip
#171 Only display admin stuff if user is an admin
Diffstat (limited to 'src')
-rw-r--r--src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java3
-rw-r--r--src/github/daneren2005/dsub/fragments/AdminFragment.java15
-rw-r--r--src/github/daneren2005/dsub/fragments/MainFragment.java6
-rw-r--r--src/github/daneren2005/dsub/fragments/UserFragment.java9
-rw-r--r--src/github/daneren2005/dsub/util/UserUtil.java79
-rw-r--r--src/github/daneren2005/dsub/util/Util.java13
-rw-r--r--src/github/daneren2005/dsub/view/ChatAdapter.java3
7 files changed, 108 insertions, 20 deletions
diff --git a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
index 2afdaf3f..7fafae60 100644
--- a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
+++ b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
@@ -63,6 +63,7 @@ import github.daneren2005.dsub.util.BackgroundTask;
import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.FileUtil;
import github.daneren2005.dsub.util.SilentBackgroundTask;
+import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.view.ChangeLog;
@@ -467,6 +468,8 @@ public class SubsonicFragmentActivity extends SubsonicActivity {
editor.putInt(Constants.PREFERENCES_KEY_SERVER_COUNT, 3);
editor.commit();
}
+
+ UserUtil.seedCurrentUser(this);
}
private void resetCacheLocation(SharedPreferences prefs) {
diff --git a/src/github/daneren2005/dsub/fragments/AdminFragment.java b/src/github/daneren2005/dsub/fragments/AdminFragment.java
index faa7529a..b7f09532 100644
--- a/src/github/daneren2005/dsub/fragments/AdminFragment.java
+++ b/src/github/daneren2005/dsub/fragments/AdminFragment.java
@@ -41,6 +41,7 @@ import github.daneren2005.dsub.service.parser.SubsonicRESTException;
import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.ProgressListener;
import github.daneren2005.dsub.util.SilentBackgroundTask;
+import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.view.UserAdapter;
@@ -52,7 +53,11 @@ public class AdminFragment extends SelectListFragment<User> {
super.onCreateContextMenu(menu, view, menuInfo);
MenuInflater inflater = context.getMenuInflater();
- inflater.inflate(R.menu.admin_context, menu);
+ if(UserUtil.isCurrentAdmin(context) && Util.checkServerVersion(context, "1.10")) {
+ inflater.inflate(R.menu.admin_context, menu);
+ } else {
+ inflater.inflate(R.menu.admin_context_user, menu);
+ }
}
@Override
@@ -74,7 +79,11 @@ public class AdminFragment extends SelectListFragment<User> {
@Override
public int getOptionsMenu() {
- return R.menu.admin;
+ if(UserUtil.isCurrentAdmin(context)) {
+ return R.menu.admin;
+ } else {
+ return R.menu.empty;
+ }
}
@Override
@@ -95,7 +104,7 @@ public class AdminFragment extends SelectListFragment<User> {
file.delete();
List<User> users = new ArrayList<User>();
- users.add(musicService.getUser(refresh, Util.getCurrentUsername(context), context, listener));
+ users.add(musicService.getUser(refresh, UserUtil.getCurrentUsername(context), context, listener));
return users;
}
}
diff --git a/src/github/daneren2005/dsub/fragments/MainFragment.java b/src/github/daneren2005/dsub/fragments/MainFragment.java
index 88baf717..e9f06e45 100644
--- a/src/github/daneren2005/dsub/fragments/MainFragment.java
+++ b/src/github/daneren2005/dsub/fragments/MainFragment.java
@@ -25,6 +25,7 @@ import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.FileUtil;
import github.daneren2005.dsub.util.LoadingTask;
import github.daneren2005.dsub.util.Pair;
+import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.view.MergeAdapter;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.service.MusicService;
@@ -207,6 +208,7 @@ public class MainFragment extends SubsonicFragment {
}
Util.setActiveServer(context, instance);
context.invalidate();
+ UserUtil.seedCurrentUser(context);
}
}
@@ -218,13 +220,15 @@ public class MainFragment extends SubsonicFragment {
if (service != null) {
service.setOnline(isOffline);
}
-
+
+ // Coming back online
if(isOffline) {
int scrobblesCount = Util.offlineScrobblesCount(context);
int starsCount = Util.offlineStarsCount(context);
if(scrobblesCount > 0 || starsCount > 0){
showOfflineSyncDialog(scrobblesCount, starsCount);
}
+ UserUtil.seedCurrentUser(context);
}
}
diff --git a/src/github/daneren2005/dsub/fragments/UserFragment.java b/src/github/daneren2005/dsub/fragments/UserFragment.java
index 1f4d4592..f2af85fb 100644
--- a/src/github/daneren2005/dsub/fragments/UserFragment.java
+++ b/src/github/daneren2005/dsub/fragments/UserFragment.java
@@ -33,6 +33,7 @@ import github.daneren2005.dsub.service.OfflineException;
import github.daneren2005.dsub.service.ServerTooOldException;
import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.SilentBackgroundTask;
+import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.view.SettingsAdapter;
@@ -53,7 +54,7 @@ public class UserFragment extends SubsonicFragment{
user = (User) args.getSerializable(Constants.INTENT_EXTRA_NAME_ID);
listView = (ListView)rootView.findViewById(R.id.fragment_list);
- listView.setAdapter(new SettingsAdapter(context, user.getSettings(), true));
+ listView.setAdapter(new SettingsAdapter(context, user.getSettings(), UserUtil.isCurrentAdmin(context)));
setTitle(user.getUsername());
@@ -66,7 +67,11 @@ public class UserFragment extends SubsonicFragment{
return;
}
- menuInflater.inflate(R.menu.user, menu);
+ if(UserUtil.isCurrentAdmin(context)) {
+ menuInflater.inflate(R.menu.user, menu);
+ } else {
+ menuInflater.inflate(R.menu.empty, menu);
+ }
}
@Override
diff --git a/src/github/daneren2005/dsub/util/UserUtil.java b/src/github/daneren2005/dsub/util/UserUtil.java
new file mode 100644
index 00000000..5158829c
--- /dev/null
+++ b/src/github/daneren2005/dsub/util/UserUtil.java
@@ -0,0 +1,79 @@
+/*
+ This file is part of Subsonic.
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+ Copyright 2014 (C) Scott Jackson
+*/
+
+package github.daneren2005.dsub.util;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import java.io.File;
+
+import github.daneren2005.dsub.R;
+import github.daneren2005.dsub.domain.User;
+import github.daneren2005.dsub.service.MusicServiceFactory;
+
+public final class UserUtil {
+ private static User currentUser;
+
+ public static void seedCurrentUser(final Context context) {
+ // Only try to seed if online
+ if(Util.isOffline(context)) {
+ return;
+ }
+
+ new SilentBackgroundTask<Void>(context) {
+ @Override
+ protected Void doInBackground() throws Throwable {
+ currentUser = MusicServiceFactory.getMusicService(context).getUser(false, getCurrentUsername(context), context, null);
+ return null;
+ }
+ }.execute();
+ }
+
+ public static User getCurrentUser(Context context) {
+ return currentUser;
+ }
+
+ public static String getCurrentUsername(Context context, int instance) {
+ SharedPreferences prefs = Util.getPreferences(context);
+ return prefs.getString(Constants.PREFERENCES_KEY_USERNAME + instance, null);
+ }
+
+ public static String getCurrentUsername(Context context) {
+ return getCurrentUsername(context, Util.getActiveServer(context));
+ }
+
+ public static boolean isCurrentAdmin(Context context) {
+ if(currentUser == null) {
+ return false;
+ } else {
+ return isCurrentRole(context, "adminRole");
+ }
+ }
+
+ public static boolean isCurrentRole(Context context, String role) {
+ if(currentUser == null) {
+ return false;
+ }
+
+ for(User.Setting setting: currentUser.getSettings()) {
+ if(setting.getName().equals(role)) {
+ return setting.getValue() == true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java
index dad557e3..931aa590 100644
--- a/src/github/daneren2005/dsub/util/Util.java
+++ b/src/github/daneren2005/dsub/util/Util.java
@@ -169,11 +169,6 @@ public final class Util {
SharedPreferences prefs = getPreferences(context);
return prefs.getBoolean(Constants.PREFERENCES_KEY_OFFLINE, false) ? 0 : prefs.getInt(Constants.PREFERENCES_KEY_SERVER_INSTANCE, 1);
}
-
- public static String getCurrentUsername(Context context) {
- SharedPreferences prefs = getPreferences(context);
- return prefs.getString(Constants.PREFERENCES_KEY_USERNAME + getActiveServer(context), null);
- }
public static boolean checkServerVersion(Context context, String requiredVersion) {
Version version = Util.getServerRestVersion(context);
@@ -231,14 +226,6 @@ public final class Util {
SharedPreferences prefs = getPreferences(context);
return prefs.getString(Constants.PREFERENCES_KEY_SERVER_NAME + instance, null);
}
-
- public static String getUserName(Context context, int instance) {
- if (instance == 0) {
- return context.getResources().getString(R.string.main_offline);
- }
- SharedPreferences prefs = getPreferences(context);
- return prefs.getString(Constants.PREFERENCES_KEY_USERNAME + instance, null);
- }
public static void setServerRestVersion(Context context, Version version) {
int instance = getActiveServer(context);
diff --git a/src/github/daneren2005/dsub/view/ChatAdapter.java b/src/github/daneren2005/dsub/view/ChatAdapter.java
index 518f81ef..c7bc13f2 100644
--- a/src/github/daneren2005/dsub/view/ChatAdapter.java
+++ b/src/github/daneren2005/dsub/view/ChatAdapter.java
@@ -10,6 +10,7 @@ import android.widget.TextView;
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.activity.SubsonicActivity;
import github.daneren2005.dsub.domain.ChatMessage;
+import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.util.Util;
import java.text.DateFormat;
@@ -47,7 +48,7 @@ public class ChatAdapter extends ArrayAdapter<ChatMessage> {
Date messageTime = new java.util.Date(message.getTime());
String messageText = message.getMessage();
- String me = Util.getUserName(activity, Util.getActiveServer(activity));
+ String me = UserUtil.getCurrentUsername(activity);
if (messageUser.equals(me)) {
layout = R.layout.chat_item_reverse;