Update.
This commit is contained in:
parent
c5b55399a1
commit
93462d4c4b
@ -61,6 +61,8 @@ class SocketService(BaseService):
|
|||||||
async def add(self, ws, user_uid):
|
async def add(self, ws, user_uid):
|
||||||
s = self.Socket(ws, await self.app.services.user.get(uid=user_uid))
|
s = self.Socket(ws, await self.app.services.user.get(uid=user_uid))
|
||||||
self.sockets.add(s)
|
self.sockets.add(s)
|
||||||
|
s.user["last_ping"] = now()
|
||||||
|
await self.app.services.user.save(s.user)
|
||||||
logger.info(f"Added socket for user {s.user['username']}")
|
logger.info(f"Added socket for user {s.user['username']}")
|
||||||
if not self.users.get(user_uid):
|
if not self.users.get(user_uid):
|
||||||
self.users[user_uid] = set()
|
self.users[user_uid] = set()
|
||||||
@ -89,8 +91,7 @@ class SocketService(BaseService):
|
|||||||
async for user_uid in self.services.channel_member.get_user_uids(
|
async for user_uid in self.services.channel_member.get_user_uids(
|
||||||
channel_uid
|
channel_uid
|
||||||
):
|
):
|
||||||
await self.send_to_user(user_uid, message)
|
sent += await self.send_to_user(user_uid, message)
|
||||||
sent += 1
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(ex, flush=True)
|
print(ex, flush=True)
|
||||||
logger.info(f"Broadcasted a message to {sent} users.")
|
logger.info(f"Broadcasted a message to {sent} users.")
|
||||||
|
@ -144,9 +144,11 @@
|
|||||||
getInputField().focus();
|
getInputField().focus();
|
||||||
})
|
})
|
||||||
document.querySelector("upload-button").addEventListener("uploaded",function(e){
|
document.querySelector("upload-button").addEventListener("uploaded",function(e){
|
||||||
|
let message = ""
|
||||||
e.detail.files.forEach((file)=>{
|
e.detail.files.forEach((file)=>{
|
||||||
app.rpc.sendMessage(channelUid,`[${file.name}](/channel/attachment/${file.relative_url})`)
|
message += `[${file.name}](/channel/attachment/${file.relative_url})`
|
||||||
})
|
})
|
||||||
|
app.rpc.sendMessage(channelUid,message)
|
||||||
})
|
})
|
||||||
textBox.addEventListener("paste", async (e) => {
|
textBox.addEventListener("paste", async (e) => {
|
||||||
try {
|
try {
|
||||||
|
@ -17,20 +17,21 @@ class ChannelAttachmentView(BaseView):
|
|||||||
relative_url=relative_path
|
relative_url=relative_path
|
||||||
)
|
)
|
||||||
|
|
||||||
current_format = mimetypes.guess_type(channel_attachment["path"])[0]
|
original_format = mimetypes.guess_type(channel_attachment["path"])[0]
|
||||||
|
format_ = self.request.query.get("format")
|
||||||
format = self.request.query.get("format")
|
|
||||||
width = self.request.query.get("width")
|
width = self.request.query.get("width")
|
||||||
height = self.request.query.get("height")
|
height = self.request.query.get("height")
|
||||||
|
|
||||||
if any([format, width, height]) and current_format.startswith("image/"):
|
if any([format_, width, height]) and original_format.startswith("image/"):
|
||||||
|
if not format_:
|
||||||
|
format_ = original_format.split("/")[1]
|
||||||
with Image.open(channel_attachment["path"]) as image:
|
with Image.open(channel_attachment["path"]) as image:
|
||||||
response = web.StreamResponse(
|
response = web.StreamResponse(
|
||||||
status=200,
|
status=200,
|
||||||
reason="OK",
|
reason="OK",
|
||||||
headers={
|
headers={
|
||||||
"Cache-Control": f"public, max-age={1337 * 420}",
|
"Cache-Control": f"public, max-age={1337 * 420}",
|
||||||
"Content-Type": f"image/{format}" if format else current_format,
|
"Content-Type": f"image/{format_}",
|
||||||
"Content-Disposition": f'attachment; filename="{channel_attachment["name"]}"',
|
"Content-Disposition": f'attachment; filename="{channel_attachment["name"]}"',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -65,19 +66,21 @@ class ChannelAttachmentView(BaseView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
await response.prepare(self.request)
|
await response.prepare(self.request)
|
||||||
|
|
||||||
# response.write is async but image.save is not
|
# response.write is async but image.save is not
|
||||||
naughty_steal = response.write
|
naughty_steal = response.write
|
||||||
loop = asyncio.get_event_loop()
|
tasks = []
|
||||||
|
|
||||||
def sync_writer(*args, **kwargs):
|
def sync_writer(*args, **kwargs):
|
||||||
return loop.run_until_complete(naughty_steal(*args, **kwargs))
|
tasks.append(naughty_steal(*args, **kwargs))
|
||||||
|
return True
|
||||||
|
|
||||||
setattr(response, "write", sync_writer)
|
setattr(response, "write", sync_writer)
|
||||||
|
|
||||||
image.save(response, format=self.request.query["format"])
|
image.save(response, format=format_)
|
||||||
|
|
||||||
setattr(response, "write", naughty_steal)
|
setattr(response, "write", naughty_steal)
|
||||||
|
|
||||||
|
await asyncio.gather(*tasks)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
response = web.FileResponse(channel_attachment["path"])
|
response = web.FileResponse(channel_attachment["path"])
|
||||||
|
Loading…
Reference in New Issue
Block a user