]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/js/storage.js
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / js / storage.js
diff --git a/jappixmini/jappix/js/storage.js b/jappixmini/jappix/js/storage.js
new file mode 100644 (file)
index 0000000..36cf544
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+
+Jappix - An open social platform
+These are the storage JS scripts for Jappix
+
+-------------------------------------------------
+
+License: AGPL
+Author: Vanaryon
+Last revision: 26/08/11
+
+*/
+
+// Gets the storage items of the user
+function getStorage(type) {
+       /* REF: http://xmpp.org/extensions/xep-0049.html */
+       
+       var iq = new JSJaCIQ();
+       iq.setType('get');
+       
+       var iqQuery = iq.setQuery(NS_PRIVATE);
+       iqQuery.appendChild(iq.buildNode('storage', {'xmlns': type}));
+       
+       con.send(iq, handleStorage);
+}
+
+// Handles the storage items
+function handleStorage(iq) {
+       var handleXML = iq.getQuery();
+       var handleFrom = fullXID(getStanzaFrom(iq));
+       
+       // Define some vars
+       var options = $(handleXML).find('storage[xmlns=' + NS_OPTIONS + ']');
+       var inbox = $(handleXML).find('storage[xmlns=' + NS_INBOX + ']');
+       var bookmarks = $(handleXML).find('storage[xmlns=' + NS_BOOKMARKS + ']');
+       var rosternotes = $(handleXML).find('storage[xmlns=' + NS_ROSTERNOTES + ']');
+       
+       // No options and node not yet configured
+       if(options.size() && !options.find('option').size() && (iq.getType() != 'error'))
+               openWelcome();
+       
+       // Parse the options xml
+       options.find('option').each(function() {
+               // We retrieve the informations
+               var type = $(this).attr('type');
+               var value = $(this).text();
+               
+               // We display the storage
+               setDB('options', type, value);
+               
+               // If this is the buddy list show status
+               if((type == 'roster-showall') && (value == '1'))
+                       showAllBuddies('storage');
+       });
+       
+       // Parse the inbox xml
+       inbox.find('message').each(function() {
+               storeInboxMessage(
+                                 $(this).attr('from'),
+                                 $(this).attr('subject'),
+                                 $(this).text(),
+                                 $(this).attr('status'),
+                                 $(this).attr('id'),
+                                 $(this).attr('date'),
+                                 [
+                                  $(this).attr('file_title'),
+                                  $(this).attr('file_href'),
+                                  $(this).attr('file_type'),
+                                  $(this).attr('file_length')
+                                 ]
+                                );
+       });
+       
+       // Parse the bookmarks xml
+       bookmarks.find('conference').each(function() {
+               // We retrieve the informations
+               var xid = $(this).attr('jid');
+               var name = $(this).attr('name');
+               var autojoin = $(this).attr('autojoin');
+               var password = $(this).find('password').text();
+               var nick = $(this).find('nick').text();
+               
+               // We display the storage
+               displayFavorites(xid, name, nick, autojoin, password);
+               
+               // Join the chat if autojoin is enabled
+               if(autojoin == '1')
+                       checkChatCreate(xid, 'groupchat', nick, password, name);
+       });
+       
+       // Parse the roster notes xml
+       rosternotes.find('note').each(function() {
+               setDB('rosternotes', $(this).attr('jid'), $(this).text());
+       });
+       
+       // Options received
+       if(options.size()) {
+               logThis('Options received.');
+               
+               // Now, get the inbox
+               getStorage(NS_INBOX);
+               
+               // Geolocate the user
+               geolocate();
+               
+               $('.options-hidable').show();
+       }
+       
+       // Inbox received
+       else if(inbox.size()) {
+               logThis('Inbox received.');
+               
+               // Send the first presence!
+               firstPresence(getDB('checksum', 1));
+               
+               // Check we have new messages (play a sound if any unread messages)
+               if(checkInboxMessages())
+                       soundPlay(2);
+               
+               $('.inbox-hidable').show();
+       }
+       
+       // Bookmarks received
+       else if(bookmarks.size()) {
+               // Join the groupchats the admin defined (if any)
+               joinConfGroupchats();
+               
+               logThis('Bookmarks received.');
+       }
+       
+       // Roster notes received (for logger)
+       else if(rosternotes.size())
+               logThis('Roster notes received.');
+}