jitterted / ensembler Goto Github PK
View Code? Open in Web Editor NEWEnsembler: the Remote Ensemble Registration System
License: Apache License 2.0
Ensembler: the Remote Ensemble Registration System
License: Apache License 2.0
The start date/time-related behavior needs to move to a new class.
Rename all code and text and database references of "Huddle" to "Ensemble".
Must be scheduled for a date/time in the Future, perhaps some amount of time in the future.
Possibly within 8am-6pm local time zone?
After an ensemble is completed it should be either automatically named or generally named from a summary of what happened.
Examples:
"created multiplayer player object out of game"
"used recursion to solve interesting problem"
"discovered method to limit number of constructors code smell"
Carried over from #61.
Also, prepare for testing with 3.0.0 snapshots!
OAuth2 'em all!
Especially see AdminDashboardControllerTest.
See Ensemble #30 in production.
This is because the UI is implementing the behavior, when it should be done by the back-end.
Right now, if the EnsembleService gets a FailedToScheduleMeeting
exception, it never sends notifications that the Ensemble was scheduled. Even if the video conference is created later (via the changeTo
), no notification is sent.
This would mean we could get rid of the JavaScript on-the-fly conversion.
For future ensembles: only allow editing of Name, Zoom link, and date/time.
For past (but not completed) ensembles: only allow editing of Name
For completed ensembles: edit only video recording link
Initially for sending emails, need to localize the date/time included in "registration confirmation" and "new huddle created" emails.
Editable on the profile edit page.
Get initial value from the browser when registering.
Right now it's hard-coded for 1 hour and 55 minutes.
Instead of pieces:
int ensembleScheduled(String description, URI registrationLink);
send the whole Huddle so we can get other info, such as date/time, to add to notifications. Use the Member's Time Zone to convert.
Name: may not allow edits after Completed
Start Date/Time changes not allowed:
Relied on Member's having time zone specified.
When many ensembles are scheduled in the future, it can be a bit confusing not to see the upcoming one (e.g., today's) at the top of the list.
Either use Stream<MemberId>
, since the callers always use .stream(), or use Immutables.
When using the API to create a Zoom meeting, apparently I'm using "waiting room" as the security measure and I should be using the "passcode" option. Set the default_password setting to true.
Right now hitting ENTER from the Date or Time input field doesn't submit the form. Can we fix that, i.e., have ENTER work from those fields? If not, move the Zoom link field to the end so can hit ENTER in that field, which will submit the form.
Instead of using start date/time, use start date/time + duration.
Sends notification
This is really a Cancel + Create shortcut as those who registered for the original date/time should not already be registered.
Later: prioritize those who already registered to be able to register for the rescheduled one.
Edit Name and Date/Time only.
Should not show the (disabled) Register button when a Huddle is Completed.
Instead of putting logic in the UI template, have a single enum for the options available to the member.
Currently only the meeting link (URI) can be edited for an Ensemble. Need to allow the rest of the Conference Details to be edited.
Such as a failure to schedule a Zoom meeting during scheduling of an Ensemble.
Carried over from issue #22: when cancelling:
After the recent fix for #11, all emails now get sent with recipients emails in BCC. For direct email notifications, such as registration confirmation, there's only one recipient.
These are group notifications: New Ensemble Scheduled, and Ensemble Recording Available.
This is an individual notification: Registration Confirmation
For notifications such as the "new ensemble", put recipients in the BCC list, not the TO list, so we don't unintentionally expose emails to others.
If (when) the JWT expires, or if it's revoked, we'll get a 401. Handle that properly.
This comes from the fact that the HuddleService takes a MemberRepository as a dependency, and I'm not happy about that -- will need a NotifierService instead so it can coordinate between the Huddle and Member repositories.
Should allow fetching new link from Zoom API.
So we can get the version number from the Actuator Info endpoint.
See #61
Grab from the maven properties
The following unit tests fail on my local machine (which is located in Austria):
membersInDifferentTimeZonesGetCustomizedEnsembleScheduledEmail
memberWithEmailWhenEnsembleScheduledThenCustomEmailSentToMember
memberWithEmailAcceptsThenEmailSentToMemberWithEnsembleDetails
Here's an example of one of the assertion errors:
java.lang.AssertionError:
Expecting actual:
["Ensembler: New Ensemble Scheduled for 2021-12-17 at 1:00pm (GMT-08:00)",
"Ensembler: New Ensemble Scheduled for 2021-12-17 at 4:00pm (GMT-05:00)"]
to contain exactly (and in same order):
["Ensembler: New Ensemble Scheduled for 2021-12-17 at 1:00PM (PST)",
"Ensembler: New Ensemble Scheduled for 2021-12-17 at 4:00PM (EST)"]
but some elements were not found:
["Ensembler: New Ensemble Scheduled for 2021-12-17 at 1:00PM (PST)",
"Ensembler: New Ensemble Scheduled for 2021-12-17 at 4:00PM (EST)"]
and others were not expected:
["Ensembler: New Ensemble Scheduled for 2021-12-17 at 1:00pm (GMT-08:00)",
"Ensembler: New Ensemble Scheduled for 2021-12-17 at 4:00pm (GMT-05:00)"]
at com.jitterted.mobreg.adapter.out.email.EmailToSendEnsembleScheduledNotifierTest.membersInDifferentTimeZonesGetCustomizedEnsembleScheduledEmail
Possible fix
The tests pass if I change the DateTimeFormatter setup in EmailNotifier
to contain a specific locale:
private static final DateTimeFormatter LONG_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("LLLL d, uuuu 'at' h:mma (zzz)", Locale.ENGLISH);
private static final DateTimeFormatter SHORT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd 'at' h:mma (zzz)", Locale.ENGLISH);
However, I don't know how you would like to approach this. I suppose, you might want to hard-code English for now?
Can't reproduce locally.
Error: Failures:
Error: PostgresqlEntityTest.huddleEntityStoredViaJdbcIsRetrievedWithMembers:63
Expecting:
com.jitterted.mobreg.adapter.out.jdbc.HuddleEntity@feb57b4
to be equal to:
com.jitterted.mobreg.adapter.out.jdbc.HuddleEntity@7893b8c
when recursively comparing field by field, but found the following difference:
field/property 'dateTimeUtc' differ:
When the Ensemble has started, should only show the Ensemble to those who have Accepted. And then only show the Zoom link, not the Decline button.
SendGrid templates or just a bit of styling?
Show the number of declined members on the dashboard. Show the list of declined members on the detail page.
Have a button to pre-fill the Zoom link input field on the Schedule New Ensemble form.
Latest is 1.16.2
Need another config option
Question: do I need anything more than the current Set<String> roles
? Or can this support:
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.