ml8 / slack-queue Goto Github PK
View Code? Open in Web Editor NEWSlack app for maintaining a set of per-channel queues in a workspace.
License: Mozilla Public License 2.0
Slack app for maintaining a set of per-channel queues in a workspace.
License: Mozilla Public License 2.0
No commands have tests right now, these tests need to be written
Block messages can't be displayed as notifications, so the main message should be text (maybe with a bloc attachment)
Users should be able to moderate/reorder the queue
Move(2, 3) should swap 2 and 3. Move (2, 8) should move 3-7 up a position.
Call '/list' with an empty queue.
A message that the queue has no one in it will be displayed.
The http request returns an error status, resulting in the slash command failing.
To expose telemetry.
For tutoring, for example, it is required to have a record of activity. This can be parsed from logs, but it would be better to have explicit hooks (e.g., PUT/POST requests). Imagining using this API for Sheets, for example.
Via flags or a config file, let users specify some hooks for various operations. When an operation occurs, that hook is notified. At the very least, support some sort of web hooks.
The recovered queue looks for an admin channel, even though there is none.
I0128 22:43:18.337935 1 server.go:125] Creating server for channel C01HKC7KWHG with admin channel
...
E0128 22:43:36.296391 1 admin.go:128] Could not find admin channel. Retrying.
E0128 22:43:36.296598 1 list_command.go:71] Permission denied to user XXX
A single queue per workspace is essentially a toy use.
Users can create a queue by adding the bot to an admin channel and creating a queue with an admin channel option + queue channel or name option. The queue would be per-channel or per-name. This would essentially be the same thing as ubots queue.
This isn't a huge refactor. Requires an additional layer of abstraction at the main layer (which needs to be refactored anyway) to direct to a particular queue.
This would require a better persistence model and metadata per-queue.
Code is sparsely commented, needs to better documentation
Admins are currently the only one who knows that a user was dequeued. Users should get a notification that they've come up in the queue.
The user that was dequeued and the admin that dequeued them should get a notification in a shared conversation. A "you've been matched!" type message.
All integration testing is at the manual level, research and add integration tests
The project README should describe what scopes are needed, how to run this, etc.
It would be good to know why/what for/etc an element/user is queued.
Include an optional reason in the enqueue command that is reflected in the UI.
List/filter by reason, etc. It should just be a blob of text/bytes.
Admins should be able to remove users from the queue
Remove(user) or Remove(3) should remove the user/index from the queue
List the queue - the user profile image is way too upscaled
Image is displayed at a higher resolution
Upscaled
Fix is simple, just change the icon size displayed in the list response.
There is a lot of duplicate code and lack of tests have allowed inconsistent ways that dependencies can be injected. The service side should be refactored.
There should also be an arbitrary notion of queue element -> service element -> UI element (related #19)
Admins should use the UI provided by the List command to moderate the queue, including UI for take/move/remove.
The list response should return a block-based UI that will send requests for additional operations, that are then executed by corresponding commands (this probably involves refactoring the Command
interface?).
The UI should use tokens to ensure that operations are carried out as a transaction.
Currently all operations are in-memory, meaning a crashed process kills the queue.
The process recovers the queue on recovery.
There is support for journaling to a file, all that needs to be done is flags and doing this on creation.
Users should be able to take users from other places in the queue
An admin should be able to do Take(2) to take the second person in the queue, etc.
Removing many elements from the queue is tedious.
Flow should be to list the queue, then to moderate from the single response. This requires updating the original list response from the remove action e.g.
If the process crashes during a user lookup in Service.Dequeue
, the taken user is dropped. Similarly, if the user lookup fails, the user gets moved to the end of the queue.
User shouldn't be dropped, and queue shouldn't be modified.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.