package io.filepicker.utils; import android.content.Context; import android.content.SharedPreferences; /** * Created by maciejwitowski on 10/23/14. */ public final class PreferencesUtils { private static final String KEY_PREFERENCES = "io.filepicker.library"; private static final String KEY_SESSION_COOKIE = "sessionCookie"; private static final String KEY_MULTIPLE = "multiple"; private static final String KEY_MIMETYPES = "mimetypes"; private static final String KEY_LOCATION = "storeLocation"; private static final String KEY_PATH = "storePath"; private static final String KEY_CONTAINER = "storeContainer"; private static final String KEY_ACCESS = "storeAccess"; private static final String KEY_MAX_FILES = "maxFiles"; private static final String KEY_MAX_SIZE = "maxSize"; private static final String KEY_SHOW_ERROR_TOAST = "showErrorToast"; private static final String KEY_SECRET = "app_secret"; private static final String KEY_POLICY_CALLS = "policy_calls"; private static final String KEY_POLICY_HANDLE = "policy_handle"; private static final String KEY_POLICY_EXPIRY = "policy_expiry"; private static final String KEY_POLICY_MAX_SIZE = "policy_max_size"; private static final String KEY_POLICY_MIN_SIZE = "policy_min_size"; private static final String KEY_POLICY_PATH = "policy_path"; private static final String KEY_POLICY_CONTAINER = "policy_container"; private final SharedPreferences sharedPreferences; private static PreferencesUtils instance = null; public static PreferencesUtils newInstance(Context context) { if (instance == null) { instance = new PreferencesUtils(context.getSharedPreferences(KEY_PREFERENCES, Context.MODE_PRIVATE)); } return instance; } private PreferencesUtils(SharedPreferences sharedPreferences) { this.sharedPreferences = sharedPreferences; } // String private void setStringValue(String key, String value) { sharedPreferences.edit().putString(key, value).apply(); } private String getStringValue(String key) { return sharedPreferences.getString(key, null); } // Boolean private void setBooleanValue(String key, Boolean value) { sharedPreferences.edit().putBoolean(key, value).apply(); } private Boolean getBooleanValue(String key) { return sharedPreferences.getBoolean(key, false); } // Int private void setIntValue(String key, int value) { sharedPreferences.edit().putInt(key, value).apply(); } private int getIntValue(String key) { return sharedPreferences.getInt(key, 0); } private void removeValue(String key) { sharedPreferences.edit().remove(key).apply(); } public void setSessionCookie(Context context, String sessionCookie) { setStringValue(KEY_SESSION_COOKIE, sessionCookie); // Whenever session cookie is changed we need to update our ImageLoader ImageLoader.setImageLoader(context); } public String getSessionCookie() { return getStringValue(KEY_SESSION_COOKIE); } public void clearSessionCookie() { removeValue(KEY_SESSION_COOKIE); } public void setMultiple(boolean allowMultiple) { setBooleanValue(KEY_MULTIPLE, allowMultiple); } public boolean getMultiple() { return getBooleanValue(KEY_MULTIPLE); } public void clearMultiple() { removeValue(KEY_MULTIPLE); } // Gets array of mimetypes and saves it as String public void setMimetypes(String[] mimetypes) { if (mimetypes == null) { return; } StringBuilder mimetypesString = new StringBuilder(); for (String mimetype : mimetypes) { mimetypesString.append(mimetype).append(","); } setStringValue(KEY_MIMETYPES, mimetypesString.toString()); } // Returns array of mimetypes Strings public String[] getMimetypes() { String mimeTypes = getStringValue(KEY_MIMETYPES); return mimeTypes != null ? mimeTypes.split(",") : null; } public void setPolicyCalls(String[] policyCalls) { if (policyCalls == null) { return; } StringBuilder policyCallsString = new StringBuilder(); for (String policyCall : policyCalls) { policyCallsString.append(policyCall).append(","); } setStringValue(KEY_POLICY_CALLS, policyCallsString.toString()); } // Returns array of mimetypes Strings public String[] getPolicyCalls() { String policyCalls = getStringValue(KEY_POLICY_CALLS); return policyCalls != null ? policyCalls.split(",") : null; } public boolean isMimetypeSet(String baseType) { String[] mimetypes = getMimetypes(); if (mimetypes != null) { for (String mimetype : mimetypes) { if (mimetype.contains(baseType)) { return true; } } } return false; } public void clearMimetypes() { removeValue(KEY_MIMETYPES); } public void setLocation(String location) { setStringValue(KEY_LOCATION, location); } public String getLocation() { return getStringValue(KEY_LOCATION); } public void setPath(String path) { setStringValue(KEY_PATH, path); } public String getPath() { return getStringValue(KEY_PATH); } public void setContainer(String container) { setStringValue(KEY_CONTAINER, container); } public String getContainer() { return getStringValue(KEY_CONTAINER); } public void setMaxFiles(Integer maxFiles) { setIntValue(KEY_MAX_FILES, maxFiles); } public Integer getMaxFiles() { return getIntValue(KEY_MAX_FILES); } public void clearMaxFiles() { setIntValue(KEY_MAX_FILES, -1); } public void setShowErrorToast(Boolean showErrorToast) { setBooleanValue(KEY_SHOW_ERROR_TOAST, showErrorToast); } public Boolean shouldShowErrorToast() { return getBooleanValue(KEY_SHOW_ERROR_TOAST); } public void setMaxSize(Integer maxSize) { setIntValue(KEY_MAX_SIZE, maxSize); } public Integer getMaxSize() { return getIntValue(KEY_MAX_SIZE); } public void clearMaxSize() { removeValue(KEY_MAX_SIZE); } public void setAccess(String access) { setStringValue(KEY_ACCESS, access); } public String getAccess() { return getStringValue(KEY_ACCESS); } public void setSecret(String secret) { setStringValue(KEY_SECRET, secret); } public String getSecret() { return getStringValue(KEY_SECRET); } public void setPolicyHandle(String policyHandle) { setStringValue(KEY_POLICY_HANDLE, policyHandle); } public String getPolicyHandle() { return getStringValue(KEY_POLICY_HANDLE); } public void setPolicyExpiry(int expiry) { setIntValue(KEY_POLICY_EXPIRY, expiry); } public int getPolicyExpiry() { return getIntValue(KEY_POLICY_EXPIRY); } public void setPolicyMaxSize(int maxSize) { setIntValue(KEY_POLICY_MAX_SIZE, maxSize); } public int getPolicyMaxSize() { return getIntValue(KEY_POLICY_MAX_SIZE); } public void setPolicyMinSize(int minSize) { setIntValue(KEY_POLICY_MIN_SIZE, minSize); } public int getPolicyMinSize() { return getIntValue(KEY_POLICY_MIN_SIZE); } public void setPolicyPath(String policyPath) { setStringValue(KEY_POLICY_PATH, policyPath); } public String getPolicyPath() { return getStringValue(KEY_POLICY_PATH); } public void setPolicyContainer(String policyContainer) { setStringValue(KEY_POLICY_CONTAINER, policyContainer); } public String getPolicyContainer() { return getStringValue(KEY_POLICY_CONTAINER); } }