package com.dappervision.wearscript.launcher;
import com.dappervision.wearscript.Log;
import com.dappervision.wearscript.Utils;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class InstalledScripts {
private static final String TAG = "WearScriptHelper";
private static final String GISTS_PATH = "gists/";
private static final String WEARSCRIPT_PATH = Utils.dataPath() + GISTS_PATH;
private static ArrayList<WearScriptInfo> mWearScripts;
public InstalledScripts() {
load();
}
private List<String> GistList() {
File extStorageDir = new File(WEARSCRIPT_PATH);
Log.i(TAG, "WSFiles: the directory: " + extStorageDir);
String[] flArray = extStorageDir.list();
if (flArray == null)
return new ArrayList<String>();
List<String> gists = Arrays.asList(flArray);
Collections.sort(gists);
Collections.reverse(gists);
return gists;
}
public void load() {
List<String> gists = GistList();
if (mWearScripts == null) {
mWearScripts = new ArrayList<WearScriptInfo>(gists.size());
}
mWearScripts.clear();
mWearScripts.add(WearScriptInfo.playground());
mWearScripts.add(WearScriptInfo.stop());
mWearScripts.add(WearScriptInfo.setup());
mWearScripts.add(WearScriptInfo.gistSync());
for (String gist : gists) {
byte[] manifestData = Utils.LoadData(GISTS_PATH + gist, "manifest.json");
if (manifestData == null)
continue;
JSONObject manifest = (JSONObject) JSONValue.parse(new String(manifestData));
if (manifest == null || !manifest.containsKey("name") || manifest.get("name").equals(""))
continue;
String filePath = WEARSCRIPT_PATH + gist + "/" + "glass.html";
WearScriptInfo wsInfo = new WearScriptInfo((String) manifest.get("name"), filePath);
mWearScripts.add(wsInfo);
}
}
public ArrayList<WearScriptInfo> getWearScripts() {
return mWearScripts;
}
}