Ver código fonte

make shortid stores in localStorage

Hongcai Deng 9 anos atrás
pai
commit
f36682ae6b
3 arquivos alterados com 35 adições e 6 exclusões
  1. 6 3
      modules/io.js
  2. 7 1
      public/index.html
  3. 22 2
      public/js/app.js

+ 6 - 3
modules/io.js

@@ -23,9 +23,12 @@ module.exports = function(io) {
   });
 
   io.on('connection', socket => {
-    socket.shortid = shortid.generate().toLowerCase(); // generate shortid for an incomming connection
-    onlines.set(socket.shortid, socket); // add incomming connection to online table
-    socket.emit('shortid', socket.shortid);
+    socket.on('request shortid', function() {
+      onlines.delete(socket.shortid);
+      socket.shortid = shortid.generate().toLowerCase(); // generate shortid for a request
+      onlines.set(socket.shortid, socket); // add incomming connection to online table
+      socket.emit('shortid', socket.shortid);
+    });
   });
 
   io.on('disconnect', socket => {

+ 7 - 1
public/index.html

@@ -14,7 +14,13 @@
       <img class="logo" src="http://semantic-ui.com/examples/assets/images/logo.png" alt="logo">
       Forsaken Mail
     </div>
-    <div class="ui label item right floated mailaddress"><i class="mail icon copyable"></i><span id="shortid">请等待分配临时邮箱</span></div>
+    <div class="ui label item right floated mailaddress">
+      <i class="mail icon copyable"></i>
+      <div class="ui icon input">
+        <input id="shortid" type="text" placeholder="请等待分配临时邮箱" disabled>
+        <i id="refreshShortid" class="circular refresh link icon"></i>
+      </div>
+    </div>
   </div>
 </div>
 <div class="ui main container">

+ 22 - 2
public/js/app.js

@@ -24,9 +24,29 @@ $(function(){
   });
 
   var socket = io();
-  socket.on('shortid', function(id) {
+
+  var setMailAddress = function(id) {
+    localStorage.setItem('shortid', id);
     var mailaddress = id + '@' + location.hostname;
-    $('#shortid').text(mailaddress).siblings('i').attr('data-clipboard-text', mailaddress);
+    $('#shortid').val(mailaddress).parent().siblings('i').attr('data-clipboard-text', mailaddress);
+  };
+
+  if(('localStorage' in window)) {
+    var shortid = localStorage.getItem('shortid');
+    if(!shortid) {
+      socket.emit('request shortid', true);
+    }
+    else {
+      setMailAddress(shortid);
+    }
+  }
+
+  $('#refreshShortid').click(function() {
+    socket.emit('request shortid', true);
+  });
+
+  socket.on('shortid', function(id) {
+    setMailAddress(id);
   });
 
   socket.on('mail', function(mail) {