Progress.
This commit is contained in:
		
							parent
							
								
									fb7cb35921
								
							
						
					
					
						commit
						36c69eb8bb
					
				@ -23,7 +23,11 @@ class SocketService(BaseService):
 | 
				
			|||||||
        print("BROADCAT!",message)
 | 
					        print("BROADCAT!",message)
 | 
				
			||||||
        count = 0
 | 
					        count = 0
 | 
				
			||||||
        for ws in self.subscriptions.get(channel_uid,[]):
 | 
					        for ws in self.subscriptions.get(channel_uid,[]):
 | 
				
			||||||
            await ws.send_json(message)
 | 
					            try:
 | 
				
			||||||
 | 
					                await ws.send_json(message)
 | 
				
			||||||
 | 
					            except Exception as ex:
 | 
				
			||||||
 | 
					                print(ex)
 | 
				
			||||||
 | 
					                continue 
 | 
				
			||||||
            count += 1
 | 
					            count += 1
 | 
				
			||||||
        return count
 | 
					        return count
 | 
				
			||||||
    async def delete(self, ws):
 | 
					    async def delete(self, ws):
 | 
				
			||||||
 | 
				
			|||||||
@ -212,7 +212,7 @@ class Socket extends EventHandler {
 | 
				
			|||||||
    connectPromises = []
 | 
					    connectPromises = []
 | 
				
			||||||
    constructor() {
 | 
					    constructor() {
 | 
				
			||||||
        super()
 | 
					        super()
 | 
				
			||||||
        this.url = window.location.hostname == 'localhost' ? 'ws://localhost/rpc.ws' : 'wss://' + window.location.hostname +'/rpc.ws'
 | 
					        this.url = window.location.hostname == 'localhost' ? 'ws://localhost:8081/rpc.ws' : 'wss://' + window.location.hostname +'/rpc.ws'
 | 
				
			||||||
        this.ensureConnection() 
 | 
					        this.ensureConnection() 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    _camelToSnake(str) {
 | 
					    _camelToSnake(str) {
 | 
				
			||||||
 | 
				
			|||||||
@ -59,6 +59,10 @@ class BaseMapper:
 | 
				
			|||||||
                model[key] = value
 | 
					                model[key] = value
 | 
				
			||||||
            yield model
 | 
					            yield model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def query(self, sql, *args):
 | 
				
			||||||
 | 
					        for record in self.db.query(sql, *args):
 | 
				
			||||||
 | 
					            yield dict(record)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def delete(self, kwargs=None) -> int:
 | 
					    async def delete(self, kwargs=None) -> int:
 | 
				
			||||||
        if not kwargs or not isinstance(kwargs, dict):
 | 
					        if not kwargs or not isinstance(kwargs, dict):
 | 
				
			||||||
            raise Exception("Can't execute delete with no filter.")
 | 
					            raise Exception("Can't execute delete with no filter.")
 | 
				
			||||||
 | 
				
			|||||||
@ -32,6 +32,10 @@ class BaseService:
 | 
				
			|||||||
    async def new(self, **kwargs):
 | 
					    async def new(self, **kwargs):
 | 
				
			||||||
        return await self.mapper.new()
 | 
					        return await self.mapper.new()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def query(self, sql, *args):
 | 
				
			||||||
 | 
					        for record in self.app.db.query(sql, *args):
 | 
				
			||||||
 | 
					            yield record
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def get(self, uid=None, **kwargs):
 | 
					    async def get(self, uid=None, **kwargs):
 | 
				
			||||||
        if uid:
 | 
					        if uid:
 | 
				
			||||||
            if not kwargs:
 | 
					            if not kwargs:
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@
 | 
				
			|||||||
  <script src="/models.js"></script>
 | 
					  <script src="/models.js"></script>
 | 
				
			||||||
  <script src="/message-list.js"></script>
 | 
					  <script src="/message-list.js"></script>
 | 
				
			||||||
  <script src="/message-list-manager.js"></script>
 | 
					  <script src="/message-list-manager.js"></script>
 | 
				
			||||||
 | 
					  <script src="/chat-window.js"></script>
 | 
				
			||||||
  <link rel="stylesheet" href="base.css">
 | 
					  <link rel="stylesheet" href="base.css">
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
@ -30,12 +31,10 @@
 | 
				
			|||||||
        <li><a href="#">Random</a></li>
 | 
					        <li><a href="#">Random</a></li>
 | 
				
			||||||
      </ul>
 | 
					      </ul>
 | 
				
			||||||
    </aside>
 | 
					    </aside>
 | 
				
			||||||
    <section class="chat-area">
 | 
					    <section>
 | 
				
			||||||
      <div class="chat-header">
 | 
					    <chat-window class="chat-area"></chat-window>
 | 
				
			||||||
        <h2>General</h2>
 | 
					  
 | 
				
			||||||
      </div>
 | 
					    <div class="chat-input">
 | 
				
			||||||
      <message-list-manager class="message-list-manager"></message-list-manager>
 | 
					 | 
				
			||||||
      <div class="chat-input">
 | 
					 | 
				
			||||||
        <textarea placeholder="Type a message..." rows="2"></textarea>
 | 
					        <textarea placeholder="Type a message..." rows="2"></textarea>
 | 
				
			||||||
        <button>Send</button>
 | 
					        <button>Send</button>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -15,6 +15,19 @@ class RPCView(BaseView):
 | 
				
			|||||||
            self.ws = ws 
 | 
					            self.ws = ws 
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
       
 | 
					       
 | 
				
			||||||
 | 
					        async def get_messages(self, channel_uid,offset=0):
 | 
				
			||||||
 | 
					            messages = []
 | 
				
			||||||
 | 
					            async for message in self.services.channel_message.query("SELECT channel_uid, user_uid, message, created_at FROM channel_message WHERE channel_uid = :channel_uid ORDER BY created_at DESC LIMIT 30 OFFSET :offset",{"channel_uid":channel_uid,"offset":int(offset)}):
 | 
				
			||||||
 | 
					                messages.append(dict(
 | 
				
			||||||
 | 
					                    uid=message["uid"],
 | 
				
			||||||
 | 
					                    user_uid=message["user_uid"],
 | 
				
			||||||
 | 
					                    channel_uid=message["channel_uid"],
 | 
				
			||||||
 | 
					                    user_nick=(await self.services.user.get(uid=message["user_uid"]))["nick"],
 | 
				
			||||||
 | 
					                    message=message["message"],
 | 
				
			||||||
 | 
					                    created_at=message["created_at"]
 | 
				
			||||||
 | 
					                ))
 | 
				
			||||||
 | 
					            return messages
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        async def get_channels(self):
 | 
					        async def get_channels(self):
 | 
				
			||||||
            channels = []
 | 
					            channels = []
 | 
				
			||||||
            async for subscription in self.services.channel_member.find(user_uid=self.user_uid,is_banned=False):
 | 
					            async for subscription in self.services.channel_member.find(user_uid=self.user_uid,is_banned=False):
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user