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