Commit 0addbaa9 authored by topjohnwu's avatar topjohnwu

Refactor repo class and SharedPref

parent baae3592
......@@ -85,8 +85,8 @@ public class ModulesAdapter extends RecyclerView.Adapter<ModulesAdapter.ViewHold
holder.description.setText(module.getDescription());
holder.author.setText(module.getAuthor());
String logUrl = module.getmLogUrl();
String supportUrl = module.getmSupportUrl();
String donateUrl = module.getmDonateUrl();
String supportUrl = module.getSupportUrl();
String donateUrl = module.getDonateUrl();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.contains("ignoreUpdateAlerts")) {
ignoreAlertUpdate = prefs.getBoolean("ignoreUpdateAlerts", false);
......@@ -140,10 +140,10 @@ public class ModulesAdapter extends RecyclerView.Adapter<ModulesAdapter.ViewHold
new WebWindow("Changelog", module.getmLogUrl(), context);
}
if (view.getId() == holder.authorLink.getId()) {
new WebWindow("Donate", module.getmDonateUrl(), context);
new WebWindow("Donate", module.getDonateUrl(), context);
}
if (view.getId() == holder.supportLink.getId()) {
new WebWindow("Support", module.getmSupportUrl(), context);
new WebWindow("Support", module.getSupportUrl(), context);
}
};
......
......@@ -92,9 +92,9 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
prefs = PreferenceManager.getDefaultSharedPreferences(context);
repo = mList.get(position);
mHolder = holder;
mDonateUrl = repo.getmDonateUrl();
mSupportUrl = repo.getmSupportUrl();
mLogUrl = repo.getmLogUrl();
mDonateUrl = repo.getDonateUrl();
mSupportUrl = repo.getSupportUrl();
mLogUrl = repo.getLogUrl();
mExpandedList = new ArrayList<>(mList.size());
for (int i = 0; i < mList.size(); i++) {
mExpandedList.add(false);
......@@ -114,13 +114,10 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
}
mHolder.title.setText(titleString);
mHolder.versionName.setText(repo.getmVersion());
mHolder.versionName.setText(repo.getVersion());
mHolder.description.setText(repo.getDescription());
String authorString = this.context.getResources().getString(R.string.author) + " " + repo.getmAuthor();
String authorString = this.context.getResources().getString(R.string.author) + " " + repo.getAuthor();
mHolder.author.setText(authorString);
String logUrl = repo.getmLogUrl();
String supportUrl = repo.getmSupportUrl();
String donateUrl = repo.getmDonateUrl();
if (prefs.contains("ignoreUpdateAlerts")) {
ignoreAlertUpdate = prefs.getBoolean("ignoreUpdateAlerts",false);
}
......@@ -136,7 +133,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
mHolder.updateStatus.setText(repo.canUpdate() ? this.context.getResources().getString(R.string.module_update_available) : this.context.getResources().getString(R.string.module_up_to_date));
}
Log.d("Magisk", "ReposAdapter: Setting up info " + repo.getId() + " and " + repo.getDescription() + " and " + repo.getmVersion());
Log.d("Magisk", "ReposAdapter: Setting up info " + repo.getId() + " and " + repo.getDescription() + " and " + repo.getVersion());
prefs = PreferenceManager.getDefaultSharedPreferences(context);
mCanUpdate = prefs.getBoolean("repo-canUpdate_" + repo.getId(), false);
......@@ -155,19 +152,19 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
}
};
String filename = repo.getId().replace(" ", "") + ".zip";
Utils.downloadAndReceive(context, receiver, repo.getmZipUrl(), filename);
Utils.downloadAndReceive(context, receiver, repo.getZipUrl(), filename);
} else {
Toast.makeText(context, repo.getId() + " is already installed.", Toast.LENGTH_SHORT).show();
}
}
if ((view.getId() == mHolder.changeLog.getId()) && (!repo.getmLogUrl().equals(""))) {
new WebWindow("Changelog", repo.getmLogUrl(),context);
if ((view.getId() == mHolder.changeLog.getId()) && (!repo.getLogUrl().equals(""))) {
new WebWindow("Changelog", repo.getLogUrl(),context);
}
if ((view.getId() == mHolder.authorLink.getId()) && (!repo.getmSupportUrl().equals(""))) {
new WebWindow("Donate", repo.getmDonateUrl(),context);
if ((view.getId() == mHolder.authorLink.getId()) && (!repo.getSupportUrl().equals(""))) {
new WebWindow("Donate", repo.getDonateUrl(),context);
}
if ((view.getId() == mHolder.supportLink.getId()) && (!repo.getmSupportUrl().equals(""))) {
new WebWindow("Support", repo.getmSupportUrl(),context);
if ((view.getId() == mHolder.supportLink.getId()) && (!repo.getSupportUrl().equals(""))) {
new WebWindow("Support", repo.getSupportUrl(),context);
}
};
mHolder.changeLog.setOnClickListener(oCl);
......
......@@ -112,14 +112,7 @@ public class ReposFragment extends Fragment {
};
Log.d("Magisk","ReposFragment, LoadRepo called");
mListRepos.clear();
List<Repo> magiskRepos = RepoHelper.listRepos(getActivity(), doReload, taskDelegate);
for (Repo repo : magiskRepos) {
Log.d("Magisk", "ReposFragment: Adding repo from string " + repo.getId());
mListRepos.add(repo);
}
new Async.LoadRepos(getActivity());
}
private void NotifyOfAlerts() {
......@@ -138,7 +131,7 @@ public class ReposFragment extends Fragment {
}
};
String filename = repo.getId().replace(" ", "") + ".zip";
Utils.downloadAndReceive(getActivity(), receiver, repo.getmZipUrl(), filename);
Utils.downloadAndReceive(getActivity(), receiver, repo.getZipUrl(), filename);
break;
......
......@@ -79,10 +79,7 @@ public class WelcomeActivity extends AppCompatActivity implements NavigationView
//Do a thing here when we get a result we want
};
new Async.LoadModules(this).execute();
new Async.LoadRepos(this, true, delegate).execute();
new Async.LoadRepos(this, !prefs.contains("hasCachedRepos"), delegate).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new Async.LoadModules(getApplication()).execute();
new Async.LoadRepos(this, false, delegate).execute();
new Async.LoadRepos(this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
setSupportActionBar(toolbar);
......
......@@ -7,16 +7,13 @@ import java.util.List;
public abstract class BaseModule {
protected String mId, mName, mVersion, mDescription, mSupportUrl, mDonateUrl, mAuthor;
protected String mId, mName, mVersion, mAuthor, mDescription, mSupportUrl, mDonateUrl;
protected boolean mIsCacheModule = false;
protected int mVersionCode = 0;
public BaseModule(List<String> props) {
this(props.toArray(new String[props.size()]));
}
protected void parseProps(List<String> props) { parseProps(props.toArray(new String[props.size()])); }
public BaseModule(String[] props) {
protected void parseProps(String[] props) {
for (String line : props) {
String[] prop = line.split("=", 2);
if (prop.length != 2) {
......@@ -93,11 +90,11 @@ public abstract class BaseModule {
return mVersionCode;
}
public String getmDonateUrl() {
public String getDonateUrl() {
return mDonateUrl;
}
public String getmSupportUrl() {
public String getSupportUrl() {
return mSupportUrl;
}
}
......@@ -16,9 +16,10 @@ public class Module extends BaseModule {
private String mZipUrl, mLogUrl;
private boolean mEnable, mRemove, mUpdateAvailable = false, mIsInstalled;
public Module(String path, Context context) {
public Module(Context context, String path) {
super(Utils.readFile(path + "/module.prop"));
super();
parseProps(Utils.readFile(path + "/module.prop"));
mRemoveFile = path + "/remove";
mDisableFile = path + "/disable";
......
......@@ -14,7 +14,6 @@ import com.topjohnwu.magisk.ModulesFragment;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.ReposFragment;
import com.topjohnwu.magisk.module.Module;
import com.topjohnwu.magisk.module.Repo;
import com.topjohnwu.magisk.module.RepoHelper;
import org.json.JSONException;
......@@ -30,6 +29,7 @@ import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.List;
public class Async {
......@@ -195,17 +195,19 @@ public class Async {
for (String mod : magisk) {
Log.d("Magisk", "Utils: Adding module from string " + mod);
ModulesFragment.listModules.add(new Module(mod, mContext));
ModulesFragment.listModules.add(new Module(mContext, mod));
}
for (String mod : magiskCache) {
Log.d("Magisk", "Utils: Adding cache module from string " + mod);
Module cacheMod = new Module(mod, mContext);
Module cacheMod = new Module(mContext, mod);
// Prevent people forgot to change module.prop
cacheMod.setCache();
ModulesFragment.listModules.add(cacheMod);
}
Collections.sort(ModulesFragment.listModules, new Utils.ModuleComparator());
return null;
}
......@@ -217,22 +219,15 @@ public class Async {
private boolean doReload;
private RepoHelper.TaskDelegate mTaskDelegate;
public LoadRepos(Context context, boolean reload, RepoHelper.TaskDelegate delegate) {
public LoadRepos(Context context) {
mContext = context;
doReload = reload;
mTaskDelegate = delegate;
}
@Override
protected Void doInBackground(Void... voids) {
ReposFragment.mListRepos.clear();
List<Repo> magiskRepos = RepoHelper.listRepos(mContext, doReload, mTaskDelegate);
for (Repo repo : magiskRepos) {
Log.d("Magisk", "Utils: Adding repo from string " + repo.getId());
ReposFragment.mListRepos.add(repo);
}
RepoHelper.createRepoMap(mContext);
ReposFragment.mListRepos = RepoHelper.getSortedList();
return null;
}
......
......@@ -31,6 +31,7 @@ import com.topjohnwu.magisk.ModulesFragment;
import com.topjohnwu.magisk.MonitorService;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.ReposFragment;
import com.topjohnwu.magisk.module.BaseModule;
import com.topjohnwu.magisk.module.Module;
import com.topjohnwu.magisk.module.Repo;
import com.topjohnwu.magisk.module.RepoHelper;
......@@ -52,6 +53,7 @@ import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Comparator;
import java.util.List;
import javax.crypto.BadPaddingException;
......@@ -304,4 +306,10 @@ public class Utils {
}
public static class ModuleComparator implements Comparator<BaseModule> {
@Override
public int compare(BaseModule o1, BaseModule o2) {
return o1.getName().compareTo(o2.getName());
}
}
}
......@@ -105,4 +105,6 @@
<string name="some_string">GTYybRBTYf5his9kQ16ZNO7qgkBJ/5MyVe4CGceAOIoXgSnnk8FTd4F1dE9p5Eus</string>
<string name="downloads">Downloads</string>
<string name="url_main">https://api.github.com/orgs/Magisk-Modules-Repo/repos?access_token=</string>
<string name="file_url">https://raw.githubusercontent.com/Magisk-Modules-Repo/%1$s/master/%2$s</string>
<string name="zip_url">https://github.com/Magisk-Modules-Repo/%1$s/archive/master.zip</string>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment