Skip to content

Instantly share code, notes, and snippets.

@BenJam
Created January 31, 2011 07:05
Show Gist options
  • Save BenJam/803728 to your computer and use it in GitHub Desktop.
Save BenJam/803728 to your computer and use it in GitHub Desktop.
A VERY basic CRUD op for localStorage from code in voice.gtd
function clearDb(){
localStorage.clear();
console.log("Cleared the local storage, god help us all.");
}
//hurrah HTML5 local storage, I'm using a singly linked list as i'm lazy.
function store(msgs){
if(!localStorage){
console.error('Browser doesn\'t support local storage, in memory only I\'m afraid');
return;
}else{
var previousMessage = null;
$.each(msgs,function(i, m){
if(localStorage.getItem(m.id+".id")==null){
localStorage.setItem("lastMessage",m.id);
localStorage.setItem(m.id+".id",m.id);
localStorage.setItem(m.id+".body",m.body);
localStorage.setItem(m.id+".sender",m.sender);
localStorage.setItem(m.id+".from",m.from);
localStorage.setItem(m.id+".read",m.read);
localStorage.setItem(m.id+".urgent",m.urgent);
localStorage.setItem(m.id+".mediaUri",m.mediaUri);
localStorage.setItem(m.id+".time",m.time);
//setup the linked list remember the last message will have this null
localStorage.setItem(m.id+".previousMessage",previousMessage);
previousMessage = m.id;
}
});
return;
}
}
//we'll do some clever local storage here later on
function cache(result){
if(result.hasError){
console.error("Problem collecting voicemail: "+result.toString());
return;
}else{
$.each(result, function(i,message){
if (!messages[message.id]){
messages[message.id] = {
id:message.id,
body:message.body,
sender:message.sender,
from:message.from,
read:false,
urgent:message.urgent,
mediaUri:message.mediaUri,
time:message.time};
}
render(message)
});
store(messages);
return;
}
}
//get the local storage messages and render them, stepping backwards through the database.
function getStore(){
if(!localStorage){
console.error('Browser doesn\'t support local storage, in memory only I\'m afraid');
return;
}else{
if(localStorage.getItem("lastMessage")!=null){
//let's remove that welcome message, if you've seen it once you've seen it a million times
if($('#welcome')){
$('#welcome').remove();
}
var previousMessage = localStorage.getItem("lastMessage");
while (previousMessage !== null){
console.log("Retrieving message: "+previousMessage+" from store.");
messages[previousMessage]={
id: localStorage.getItem(previousMessage+".id"),
body: localStorage.getItem(previousMessage+".body"),
sender: localStorage.getItem(previousMessage+".sender"),
from: localStorage.getItem(previousMessage+".from"),
read: localStorage.getItem(previousMessage+".read")=== "true" ? true : false,
urgent: localStorage.getItem(previousMessage+".urgent") === "true" ? true : false,
mediaUri: localStorage.getItem(previousMessage+".mediaUri"),
time: String(localStorage.getItem(previousMessage+".time"))
};
render(messages[previousMessage]);
previousMessage = localStorage.getItem(previousMessage+".previousMessage");
}
return;
}
else {
console.log("Couldn't find a database of messages, have you used this before on another browser? If so open it in there instead.");
return;
}
}
return;
}
//basic logging to help with the localStorage code.
function storeListener(e){
if(!e){
console.log(e);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment