lindsay
lindsay

Reputation: 972

Updating Chrome storage object key value

I'm creating a Google Chrome extension and I'm saving information using the chrome.storage.sync.set function. According to the API you can create an object and save the information between accounts. While I am not having any trouble creating this object, I am having trouble updating a specific key and syncing the value, without making an entirely separate object for each change.

For example my object looks something like this when logged to the console:

{
    profile: {
        preferences: {
            username: 'my username'
        }
    }
}

I'd like to simply update the value 'username'.

I've tried doing something like this (I have access to the object through the chrome.storage.sync.set function callback):

_ext.profile.preferences.username = 'my new username';

This does update the object, but does not save and store it.

I have also tried this method:

_ext.profile.preferences.username = 'my new username 2'; /* update the key value */
chrome.storage.sync.set(_ext.profile) /* save the entire object to memory */

This method has not worked either.

What do you think is the problem here? Is it the way in which I'm trying to save the object or is there a better method to having a settings based approach?

Upvotes: 1

Views: 1487

Answers (2)

Geof.Hoffman
Geof.Hoffman

Reputation: 21

I stumbled across your post while looking to solve the same issue. I ended up using a similar approach as React Redux state management. Instead of trying to manipulate the stored data, I make a copy then replace it.

var data = {}; 
chrome.storage.sync.get(function(result){
data = result.storedData;
data.profile.preferences.username = 'my new username';
});  
chrome.storage.sync.set({'storedData': data});

Upvotes: 1

Lee Adams
Lee Adams

Reputation: 331

If you are calling "get" right away, before the "set" has completed, that could be the problem. Your example does not show a callback being passed to handle completion of the "set".

Upvotes: 2

Related Questions