CLOUD: Add Storage saving mechanism
In this commit CloudManager starts supporting multiple Storage. Now, in its init() it loads all the Storages and determines the current one. It now also has save() method. In that method all Storages are saved with their new saveConfig() method. CloudManager::save() not called from anywhere, though. The only one Storage that could be added is DropboxStorage in case you have no cloud-related config keys or you have no storages connected.
This commit is contained in:
parent
c4b1fdc727
commit
41e65db7d0
6 changed files with 112 additions and 24 deletions
|
@ -45,9 +45,12 @@ static void saveAccessTokenCallback(void *ptr) {
|
|||
if (!result.contains("access_token") || !result.contains("uid")) {
|
||||
warning("Bad response, no token/uid passed");
|
||||
} else {
|
||||
ConfMan.set("current_storage_type", "Dropbox", "cloud");
|
||||
ConfMan.set("current_storage_access_token", result.getVal("access_token")->asString(), "cloud");
|
||||
ConfMan.set("current_storage_user_id", result.getVal("uid")->asString(), "cloud");
|
||||
//we suppose that's the first storage
|
||||
ConfMan.set("storages_number", "1", "cloud");
|
||||
ConfMan.set("current_storage", "1", "cloud");
|
||||
ConfMan.set("storage1_type", "Dropbox", "cloud");
|
||||
ConfMan.set("storage1_access_token", result.getVal("access_token")->asString(), "cloud");
|
||||
ConfMan.set("storage1_user_id", result.getVal("uid")->asString(), "cloud");
|
||||
ConfMan.removeKey("dropbox_code", "cloud");
|
||||
debug("Now please restart ScummVM to apply the changes.");
|
||||
}
|
||||
|
@ -66,6 +69,12 @@ DropboxStorage::~DropboxStorage() {
|
|||
curl_global_cleanup();
|
||||
}
|
||||
|
||||
void DropboxStorage::saveConfig(Common::String keyPrefix) {
|
||||
ConfMan.set(keyPrefix + "type", "Dropbox", "cloud");
|
||||
ConfMan.set(keyPrefix + "access_token", _token, "cloud");
|
||||
ConfMan.set(keyPrefix + "user_id", _uid, "cloud");
|
||||
}
|
||||
|
||||
void DropboxStorage::syncSaves(BoolCallback callback) {
|
||||
//this is not the real syncSaves() implementation
|
||||
info(new Common::Callback<DropboxStorage, StorageInfo>(this, &DropboxStorage::infoMethodCallback));
|
||||
|
@ -106,22 +115,22 @@ void DropboxStorage::infoMethodCallback(StorageInfo storageInfo) {
|
|||
debug("info: %s", storageInfo.info().c_str());
|
||||
}
|
||||
|
||||
DropboxStorage *DropboxStorage::loadFromConfig() {
|
||||
DropboxStorage *DropboxStorage::loadFromConfig(Common::String keyPrefix) {
|
||||
KEY = ConfMan.get("DROPBOX_KEY", "cloud");
|
||||
SECRET = ConfMan.get("DROPBOX_SECRET", "cloud");
|
||||
|
||||
if (!ConfMan.hasKey("current_storage_access_token", "cloud")) {
|
||||
if (!ConfMan.hasKey(keyPrefix + "access_token", "cloud")) {
|
||||
warning("No access_token found");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ConfMan.hasKey("current_storage_user_id", "cloud")) {
|
||||
if (!ConfMan.hasKey(keyPrefix + "user_id", "cloud")) {
|
||||
warning("No user_id found");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Common::String accessToken = ConfMan.get("current_storage_access_token", "cloud");
|
||||
Common::String userId = ConfMan.get("current_storage_user_id", "cloud");
|
||||
Common::String accessToken = ConfMan.get(keyPrefix + "access_token", "cloud");
|
||||
Common::String userId = ConfMan.get(keyPrefix + "user_id", "cloud");
|
||||
return new DropboxStorage(accessToken, userId);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue