Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 23_03_2023 #39

Merged
merged 229 commits into from
Mar 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
229 commits
Select commit Hold shift + click to select a range
b8b24c0
We dont support button html (#7500)
hariombalhara Mar 3, 2023
2d26d73
Fix/DST issues (#7462)
roae Mar 3, 2023
26ea249
Fix: email encoding bug (#7490)
G3root Mar 3, 2023
d838783
Well, you can have 0 attendees in a booking (#7494)
hariombalhara Mar 3, 2023
056edd8
fix event type options (#7473)
CarinaWolli Mar 3, 2023
61a5c3a
New Crowdin translations by Github Action (#7467)
github-actions[bot] Mar 3, 2023
f3143d9
fix: use only slug (#7504)
Udit-takkar Mar 3, 2023
c8b01f6
Revert "fix: use only slug (#7504)" (#7506)
zomars Mar 3, 2023
47e948f
Fixes formatting issues with lists in event type description and bio …
CarinaWolli Mar 3, 2023
1551a29
Made Skeleton Loader for Availibilty Page look more like actual conte…
rksingh2001 Mar 4, 2023
9d7cd73
Fixed lockfile, bumped nextjs to v13.2.3
emrysal Mar 4, 2023
0739997
Small Embed Fixes (#7513)
hariombalhara Mar 4, 2023
4366405
Updates to yarn.lock / removed outdated deps from downstream
emrysal Mar 4, 2023
262c8cf
Removed @next/font (#7514)
emrysal Mar 4, 2023
cc1d606
Implementing CAL-1173 (#7509)
leog Mar 5, 2023
2dddd4c
feat: create trpc route to fetch download link (#7495)
Udit-takkar Mar 5, 2023
da625f1
New Crowdin translations by Github Action (#7516)
github-actions[bot] Mar 5, 2023
89bf832
Update CONTRIBUTING.md
PeerRich Mar 5, 2023
c2668ac
fix: use recordingId to check loading (#7524)
Udit-takkar Mar 6, 2023
c895668
fix: use slug in options (#7523)
Udit-takkar Mar 6, 2023
8a9b985
Bulk edit locations when default conferencing app is set (#7520)
sean-brydon Mar 6, 2023
3d41c64
feat: error message for invalid variables in custom event name (#7426)
G3root Mar 6, 2023
5f9f6ef
Only show Google Meet dependency when GCal is not set as destination …
joeauyeung Mar 6, 2023
fa7260d
feat: use next transpile packages feature (#7527)
G3root Mar 6, 2023
ddf7a23
use inner context type (#7449)
juliusmarminge Mar 6, 2023
bca1a1b
New Crowdin translations by Github Action (#7522)
github-actions[bot] Mar 6, 2023
5616dba
Minor typo fixups :pray (#7530)
emrysal Mar 6, 2023
6a6faf3
New Crowdin translations by Github Action (#7534)
github-actions[bot] Mar 6, 2023
b349def
Update README.md
PeerRich Mar 6, 2023
e627cc5
max-height for description + scroll bar, removing description icon (#…
PeerRich Mar 6, 2023
18b6a93
Fix: Filter Timezones by cities (#7540)
gitstart-calcom Mar 6, 2023
69808bb
1172 booking uid design update (#7537)
b-babic Mar 6, 2023
33f35e7
Fix/incorrect timezone on booking success (#7544)
roae Mar 6, 2023
25ec531
Update CODEOWNERS
emrysal Mar 6, 2023
b247075
Revert "Update CODEOWNERS"
emrysal Mar 6, 2023
a0f5570
make "text" the default value (#7543)
CarinaWolli Mar 6, 2023
56a2b66
v2.6.7
emrysal Mar 6, 2023
a25195c
fix: overflow issue in event type form builder and booking page (#7553)
G3root Mar 7, 2023
0c94b0a
New Crowdin translations by Github Action (#7546)
github-actions[bot] Mar 7, 2023
faaf935
Fix for bad primary calendar check (#7557)
alishaz-polymath Mar 7, 2023
48c8b74
fix: remove alert and disable toggle (#7542)
Udit-takkar Mar 7, 2023
a2fd5ba
New Crowdin translations by Github Action (#7561)
github-actions[bot] Mar 7, 2023
6f8ea49
"Manage Booking Questions" - Add a comprehensive test (#7465)
hariombalhara Mar 7, 2023
ce8e1d5
Fix "User Added Question" Label in Email and Calendar Invite (#7559)
hariombalhara Mar 7, 2023
74a30a1
URL to initiate SAML authentication flow (#6813)
Mar 7, 2023
699c55d
New Crowdin translations by Github Action (#7562)
github-actions[bot] Mar 7, 2023
6c8b428
New Crowdin translations by Github Action (#7566)
github-actions[bot] Mar 7, 2023
7eecc31
Syncs yarn.lock with submodules
zomars Mar 7, 2023
2fa83bd
Add Idp-Initiated SSO (#6781)
Mar 7, 2023
1b468b9
Fixed test (#7572)
emrysal Mar 7, 2023
b0da827
fix: event location not translated in booking page (#7528)
G3root Mar 7, 2023
163444a
Bug - teams being double created without slugs (#7571)
joeauyeung Mar 7, 2023
804ba04
make eventpage optional (#7573)
CarinaWolli Mar 7, 2023
c97fecf
Syncs react-hook-form in console/website
zomars Mar 8, 2023
e160196
Generate getSchedule response using the invitee timeZone (#7574)
roae Mar 8, 2023
4ab6c2b
New Crowdin translations by Github Action (#7569)
github-actions[bot] Mar 8, 2023
58836ee
New Crowdin translations by Github Action (#7577)
github-actions[bot] Mar 8, 2023
34d3bdf
New Crowdin translations by Github Action (#7579)
github-actions[bot] Mar 8, 2023
d28c914
Fix modal z index issue in settings (#7578)
G3root Mar 8, 2023
29ceaee
feat: Add fresh chat to list of support integration (#7448)
G3root Mar 8, 2023
84da528
feat: add partstat, rsvp, role (#6940)
Udit-takkar Mar 8, 2023
4e1e257
fix: create a trpc route for fetching country (#7555)
Udit-takkar Mar 8, 2023
2f8280a
fix: routing form delete button not rendered (#7424)
G3root Mar 8, 2023
8a2da01
v2.6.8
emrysal Mar 8, 2023
8b47c06
Fix conflicts for embed tests (#7311)
zomars Mar 8, 2023
37038a0
Fixes broken layout of event type description (#7587)
CarinaWolli Mar 8, 2023
e836a04
readded overflow-scroll (#7590)
PeerRich Mar 8, 2023
0ee3b26
fix: default conferencing app not showing the correct value after upd…
G3root Mar 8, 2023
2da5b19
Change quick setup to use docker compose plugin (#7098)
renancleyson-dev Mar 8, 2023
b03bcc7
Create issue_label_bot.yaml
PeerRich Mar 8, 2023
2e5c0c6
Fix/icon size and url (#7605)
lucas-barros Mar 8, 2023
d40b934
Bugfix/improved assignment page (#7165)
emrysal Mar 8, 2023
57d17b7
Delete issue_label_bot.yaml
PeerRich Mar 8, 2023
8f5843a
Use inviteeTimeZone instead of organizerTimeZone (#7607)
emrysal Mar 8, 2023
7b169eb
New Crowdin translations by Github Action (#7588)
github-actions[bot] Mar 8, 2023
736c30f
injects secrets with infisical (#7105)
maidul98 Mar 8, 2023
c32aadf
fix: ui inconsistency in calendar app (#7209)
Udit-takkar Mar 8, 2023
58b439c
Revamp Google Cal warning for Meet, Amie, and Vimcal (#7308)
joeauyeung Mar 9, 2023
5ebbd51
Added serverside translations to the forgot password page. (#7618)
JeroenReumkens Mar 9, 2023
3a6f05f
Fixing multiple duration not selected correctly (#7597)
leog Mar 9, 2023
fe17203
fix: select (#7612)
G3root Mar 9, 2023
18c1a6a
Fixing sessionTimeout conversion (#7611)
leog Mar 9, 2023
913466d
fix/[cal-1091]-Changing the timezone in profile settings doesn't chan…
roae Mar 9, 2023
b3c973e
fix: deprecated warning (#7620)
G3root Mar 9, 2023
65687d6
Fixed zapier template UI spacing issue (#7582)
umairfarooq44 Mar 9, 2023
d80581a
fix: prevent refetching country (#7622)
Udit-takkar Mar 9, 2023
df4fedd
fix: remove items-center and add fle x shrink (#7624)
Udit-takkar Mar 9, 2023
feb8218
Routing form UI update (#7452)
gitstart-calcom Mar 9, 2023
2ddada4
fix: use /avatar url (#7328)
Udit-takkar Mar 9, 2023
c374f4f
Fix: about section editor (#7287)
ArindamBiswas-dev Mar 9, 2023
4cd32fc
new error for no available user (#7609)
PeerRich Mar 9, 2023
77bfd37
fixed back button in settings (#7634)
PeerRich Mar 9, 2023
fa383d6
v2.6.9
emrysal Mar 9, 2023
4ea729c
feat: Cron app (#7446)
miguelnietoa Mar 9, 2023
943142e
Add google-calendar dependency to Cron app (#7636)
miguelnietoa Mar 9, 2023
d9a555d
Additional fields as variables for custom event name (#7454)
CarinaWolli Mar 9, 2023
2305b92
fixed timezone select (#7638)
PeerRich Mar 9, 2023
95c1c81
Fix ColorPicker not showing up and Auto theme not working (#7626)
hariombalhara Mar 9, 2023
dbf7489
Only show smsReminderNumber when workflow has ATTENDEE_NUMBER as acti…
CarinaWolli Mar 9, 2023
6d82e3f
Move routing forms outside of ee and use LicenseRequired component in…
hariombalhara Mar 9, 2023
aebfc73
set isBefore or isSame to figure out the months between dates (#7649)
roae Mar 10, 2023
ba0e443
fixed scroll description size, fixed dark mode toggle switch, fixed d…
PeerRich Mar 10, 2023
f22bf72
Hotfix/Broken EventType duplication (#7655)
hariombalhara Mar 10, 2023
7edebbc
Make sure that a hidden field/question is never required (#7652)
hariombalhara Mar 10, 2023
4e8653c
Change to WEBAPP_URL (#7643)
joeauyeung Mar 10, 2023
d504734
Delay workflow email cancellation in sendgrid for all case (#7647)
CarinaWolli Mar 10, 2023
e24f1d8
feat: translate attendee scheduled email in bookers locale (#7654)
G3root Mar 10, 2023
f3360e6
Fix jackson build error (#7641)
keithwillcode Mar 10, 2023
7b21839
Save refresh token (#7661)
joeauyeung Mar 10, 2023
164f891
v2.6.11
emrysal Mar 10, 2023
eb66931
fix(calendar): recurring event fix (#6959)
zomars Mar 10, 2023
cbc9cd6
[CAL-988] Limit total appointment time per day/week/month/year (#7166)
ShaneMaglangit Mar 10, 2023
d81d772
feat(lib): add more tests to lib package (#7210)
Mythie Mar 10, 2023
2317473
feat(web): improve session retrieval performance (#7584)
Mythie Mar 10, 2023
d2ffa08
New Crowdin translations by Github Action (#7632)
github-actions[bot] Mar 10, 2023
6a97043
Revert "Fix conflicts for embed tests (#7311)" (#7670)
zomars Mar 10, 2023
229aeeb
Fix booking time hydration error (#7253)
echo304 Mar 11, 2023
14c38f5
Small fix to next-auth-options (#7674)
emrysal Mar 11, 2023
5560f9d
v2.6.12
emrysal Mar 11, 2023
1625f46
Fixed linting issues in Playwright config (#7662)
keithwillcode Mar 12, 2023
a22e4ee
Fixes weird background color (#7678)
sean-brydon Mar 12, 2023
71a3374
fix: add confirm and reject icon in email (#7457)
Udit-takkar Mar 12, 2023
02d70c6
empty screen for unpublished teams (#7206)
PeerRich Mar 12, 2023
0871314
Amend logic to figure out if selected slot is available (#7684)
roae Mar 13, 2023
1c8f9cb
New Crowdin translations by Github Action (#7675)
github-actions[bot] Mar 13, 2023
18414e8
Fix user time format not respected and booking dates not localized on…
lucas-barros Mar 13, 2023
6c55138
Update crowdin.yml
zomars Mar 10, 2023
d545a9e
Fix save booking title unescaped (#7591)
G3root Mar 13, 2023
ed750c8
Seated booking rescheduling. (#5427)
alannnc Mar 14, 2023
c0f4c8e
fix: bookings request reschedule UI badge (#7436)
G3root Mar 14, 2023
9fd7ca6
fix: use title instead of eventtype (#7720)
Udit-takkar Mar 14, 2023
f027f01
added screenshot for wipe my cal (#7723)
PeerRich Mar 14, 2023
1ba6b08
cal video: show meeting info in a hideable box (#7295)
PeerRich Mar 14, 2023
19b1f8a
Removes Snaplet actions for now
zomars Mar 14, 2023
ec4228a
feat(app-store): add zohocrm app to app-store (#7182)
jatinsandilya Mar 15, 2023
ae0ed41
fixes #7548 - Scroll bar because auto height adjustment doesn't take …
LarsArtmann Mar 15, 2023
84fd277
Adds new responses to zapier payload (#7736)
zomars Mar 15, 2023
f728272
Removed email & name placeholder from booking page (#7708)
HiMoritz Mar 15, 2023
877f72d
fixed leading for labels
PeerRich Mar 15, 2023
d778fe6
Does case insensitive select, then overwrites email with IdP email (#…
emrysal Mar 15, 2023
fcb06a1
Bugfix/allow impersonation non cal id p (#7689)
emrysal Mar 15, 2023
e887167
Remove event type dupes, assign ownership based on existing _user_eve…
emrysal Mar 15, 2023
9568e16
Improvements to teams for self hosters (#7753)
joeauyeung Mar 15, 2023
74986bb
Events not being added to outlook (#7726)
keithwillcode Mar 15, 2023
3924731
fix: undefined reason (#7745)
G3root Mar 15, 2023
a575190
Fix: hydration error /booking/[uid] (#7732)
G3root Mar 15, 2023
2cc937b
chore: Deactivate automatic link prefetching for `/blog` links (#7751)
p6l-richard Mar 15, 2023
47bf6d2
chore: bump node version to v18 (#7310)
anonrig Mar 15, 2023
089f52b
Update yarn.lock
zomars Mar 15, 2023
f20d78b
Adds prisma data proxy (#7706)
zomars Mar 15, 2023
54cefcb
Upgrades yarn v1 to v3. Improves CI times by 2x (#7738)
zomars Mar 15, 2023
49d6dd9
Updates yarn version
zomars Mar 15, 2023
91464fb
Revert - create new bookings - writing team members to DB (#7756)
joeauyeung Mar 15, 2023
96308cd
v2.7.0
zomars Mar 15, 2023
0f6a678
Disable PRISMA_GENERATE_DATAPROXY
emrysal Mar 16, 2023
325dc98
fix: reschedule reason title in email (#7746)
G3root Mar 16, 2023
7179b09
Allow rescheduleReason to be marked required (#7729)
hariombalhara Mar 16, 2023
5993e08
Fix: EventType crash when Moving up and down beyond boundaries (#7765)
hariombalhara Mar 16, 2023
c8554e6
[CAL-203] App Store: Add <iframe> as an option in the slider (#7324)
gitstart-calcom Mar 16, 2023
84f7924
Hotfix: guest are not added to the invite and emails (#7767)
G3root Mar 16, 2023
77df411
refactor: event types kbar action (#7423)
G3root Mar 16, 2023
09af14b
fix: badge component line-height according to the DS (#7766)
G3root Mar 16, 2023
b20c0df
Remove 'userIsOwner' from isCancelled (#7773)
emrysal Mar 16, 2023
358aa8b
Prevent refresh_token nulling if the returned refresh token is empty …
emrysal Mar 16, 2023
4308ea8
Fix Google Calendar sharing guest information logic (#7323)
joeauyeung Mar 16, 2023
2685e81
Hotfix/account provider should be lowercase (#7763)
emrysal Mar 16, 2023
99fe67b
v2.7.1
emrysal Mar 16, 2023
3811dd5
Adds back playwright for OG images generator
zomars Mar 16, 2023
750362c
Update yarn lock
zomars Mar 16, 2023
f3e8bed
Fix dynamic bookings overwriting users (#7699)
joeauyeung Mar 16, 2023
470ef73
Make embed tests work with single playwright config (#7781)
hariombalhara Mar 16, 2023
5cbd334
Simplifies admin password role checks
zomars Mar 16, 2023
e001c0b
test: add multiple guests e2e test (#7774)
G3root Mar 17, 2023
c6ff3dc
feat: take locale relavant while formatting date in /bookings (#7691)
G3root Mar 17, 2023
0f89415
fix: videoCallUrl is not saved in metadata after rescheduling (#7715)
G3root Mar 17, 2023
e1411b3
Fixes select getting darkmode text color even on lightmode (#7799)
sean-brydon Mar 17, 2023
9ac562c
feat: add toast dynamically on booking page (#7672)
saideepesh000 Mar 17, 2023
9ba13a3
Amend logic to calc slots time already in DST (#7792)
roae Mar 17, 2023
13577a5
If no expiry date then refresh the token (#7805)
joeauyeung Mar 17, 2023
6128be8
Fixes that sometimes last shown slot was unavailable (#7804)
CarinaWolli Mar 17, 2023
8d27dcd
Use dayjs.tz (#7808)
joeauyeung Mar 17, 2023
650ecc7
Upgrades turbo to 1.8.3 (#7809)
zomars Mar 17, 2023
6799657
chore: update docs links (#7782)
p6l-richard Mar 17, 2023
f0c7d7f
Uses internal @calcom/embed-snippet
zomars Mar 17, 2023
27c29c6
Bugfix/format without time zone (#7820)
emrysal Mar 18, 2023
22b189c
fix: render markdown in og images (#7693)
G3root Mar 19, 2023
8fd1d76
fix add calendar button width and alignment (#7814)
darshandamre Mar 19, 2023
631bf4d
fix: hide giphy in cancellation detail page (#7828)
G3root Mar 20, 2023
5d8575a
[CAL-1096] Embed selection modal - UI update (#7327)
gitstart-calcom Mar 20, 2023
0d4b084
Update dialog min-width (#7806)
NadavsSchwartz Mar 20, 2023
b3407e1
Fixes vercel url usage on the client (#7823)
zomars Mar 20, 2023
131611e
Upgrade react-select (#7824)
sean-brydon Mar 20, 2023
a0c9123
fix: Add appName to generate_api_key_description (#7819)
miguelnietoa Mar 20, 2023
ee8b2e6
feat: add rate limiting to reset password endpoint (#7700)
G3root Mar 20, 2023
5d7685f
revalidate event type page on update (#7685)
roae Mar 20, 2023
d2352da
fix: remove cal.com from title when branding is disabled (#7827)
G3root Mar 20, 2023
a145de5
Adds multiselect checkbox fixes (#7835)
sean-brydon Mar 20, 2023
0c29f2a
Adds team members to gCal (#7841)
zomars Mar 20, 2023
19bc329
fixed location input, date overwrite dialog (#7778)
PeerRich Mar 20, 2023
1cd96d4
No delete of booking on seated events, fix id->uid (#7839)
emrysal Mar 20, 2023
7967a65
Edit location dialog select (#7833)
sean-brydon Mar 20, 2023
0bae688
Fixes additional inputs as variables in custom workflow templates (#7…
CarinaWolli Mar 20, 2023
de2a56e
v2.7.2
emrysal Mar 20, 2023
03c9fc7
Update yarn.lock
zomars Mar 20, 2023
f1ac45e
Add motif env vars (#7847)
p6l-richard Mar 21, 2023
2ef4a05
Add team members to iCal, Apple Cal, Outlook, and Lark calendar event…
joeauyeung Mar 21, 2023
db94759
added team recording hint to cal video (#7855)
PeerRich Mar 21, 2023
7af2330
fix: use zod in getting started and settings (#7698)
Udit-takkar Mar 21, 2023
d27817a
Add a minute in endTime working hours when 11:59 is selected (#7852)
roae Mar 21, 2023
3896333
Fix/conflicts of custom input Name, with system field (#7856)
hariombalhara Mar 21, 2023
07fd3ad
i18n for cal video sidebar (#7862)
PeerRich Mar 21, 2023
eb93524
Updated Daily.co Partnership links (#7868)
PeerRich Mar 21, 2023
7d9c21c
adds fix-availability-slot-addition (#7420)
shafkathullah Mar 21, 2023
696122a
updated daily.co env description (#7869)
PeerRich Mar 21, 2023
427b192
Update yarn.lock
zomars Mar 21, 2023
20b3efb
Handle empty label from Custom inputs (#7871)
hariombalhara Mar 21, 2023
7fc8849
Make sure that label is also set (#7874)
hariombalhara Mar 22, 2023
79f7a16
fix: pass timeFormat to booking page (#7642)
Udit-takkar Mar 22, 2023
e4eb21b
fix: metadata get lost when rescheduling (#7873)
G3root Mar 22, 2023
1b459eb
style: Increase input width for duration limits (#7779)
ShaneMaglangit Mar 22, 2023
1512551
Update package.json
PeerRich Mar 22, 2023
49ee5d3
Fix rescheduling updating calendars & duplicate bookings (#7851)
joeauyeung Mar 22, 2023
efb9bf7
replacing intercom with helpscout (#7865)
PeerRich Mar 22, 2023
4e24735
fix: set canonical to https://cal.com on .dev as well (#7883)
p6l-richard Mar 22, 2023
d1ca7b4
fix redirect for recurring events (#7821)
darshandamre Mar 22, 2023
1bf50e0
fix: meeting not getting deleted (#7878)
G3root Mar 22, 2023
520e7fe
fix: remove "Nameless" from title in booking cancel page (#7888)
G3root Mar 23, 2023
c1f7d5c
merge
dmkav Mar 24, 2023
8b4a4ad
merge
dmkav Mar 24, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .env.appStore.example
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,17 @@
# - APP STORE **********************************************************************************************
# ⚠️ ⚠️ ⚠️ THESE WILL BE MIGRATED TO THE DATABASE TO PREVENT AWS's 4KB ENV QUOTA ⚠️ ⚠️ ⚠️
# - DAILY.CO VIDEO
# Enables Cal Video. to get your key
# 1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
# 2. From within your dashboard, go to the [developers](https://dashboard.daily.co/developers) tab.
# @see https://github.com/calcom/cal.com#obtaining-daily-api-credentials

DAILY_API_KEY=
DAILY_SCALE_PLAN=''

# - GOOGLE CALENDAR/MEET/LOGIN
# Needed to enable Google Calendar integration and Login with Google
# @see https://github.com/calendso/calendso#obtaining-the-google-api-credentials
# @see https://github.com/calcom/cal.com#obtaining-the-google-api-credentials
GOOGLE_API_CREDENTIALS=

# To enable Login with Google you need to:
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ That's where Cal.com comes in. Self-hosted or hosted by us. White-label by desig
- [React](https://reactjs.org/?ref=cal.com)
- [Tailwind](https://tailwindcss.com/?ref=cal.com)
- [Prisma](https://prisma.io/?ref=cal.com)
- [Daily.co](https://go.cal.com/daily)

## Stay Up-to-Date

Expand Down Expand Up @@ -432,7 +433,7 @@ following

### Obtaining Daily API Credentials

1. Open [Daily](https://www.daily.co/) and sign into your account.
1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
2. From within your dashboard, go to the [developers](https://dashboard.daily.co/developers) tab.
3. Copy your API key.
4. Now paste the API key to your .env file into the `DAILY_API_KEY` field in your .env file.
Expand Down
2 changes: 2 additions & 0 deletions apps/web/components/apps/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import { FiCheck, FiFlag, FiPlus } from "@calcom/ui/components/icon";

/* These app slugs all require Google Cal to be installed */

/* These app slugs all require Google Cal to be installed */

const Component = ({
name,
type,
Expand Down
3 changes: 2 additions & 1 deletion apps/web/components/booking/AvailableTimes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ const AvailableTimes: FC<AvailableTimesProps> = ({
slots.map((slot) => {
type BookingURL = {
pathname: string;
query: Record<string, string | number | string[] | undefined>;
query: Record<string, string | number | string[] | undefined | TimeFormat>;
};
const bookingUrl: BookingURL = {
pathname: router.pathname.endsWith("/embed") ? "../book" : "book",
Expand All @@ -103,6 +103,7 @@ const AvailableTimes: FC<AvailableTimesProps> = ({
date: dayjs.utc(slot.time).tz(timeZone()).format(),
type: eventTypeId,
slug: eventTypeSlug,
timeFormat,
/** Treat as recurring only when a count exist and it's not a rescheduling workflow */
count: recurringCount && !rescheduleUid ? recurringCount : undefined,
...(ethSignature ? { ethSignature } : {}),
Expand Down
80 changes: 38 additions & 42 deletions apps/web/components/booking/pages/BookingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useSession } from "next-auth/react";
import dynamic from "next/dynamic";
import Head from "next/head";
import { useRouter } from "next/router";
import { useCallback, useEffect, useMemo, useReducer, useState } from "react";
import { useEffect, useMemo, useReducer, useState } from "react";
import { useForm, useFormContext } from "react-hook-form";
import { v4 as uuidv4 } from "uuid";
import { z } from "zod";
Expand All @@ -15,7 +15,6 @@ import { getEventLocationType, locationKeyToString } from "@calcom/app-store/loc
import { createPaymentLink } from "@calcom/app-store/stripepayment/lib/client";
import { getEventTypeAppData } from "@calcom/app-store/utils";
import type { LocationObject } from "@calcom/core/location";
import type { Dayjs } from "@calcom/dayjs";
import dayjs from "@calcom/dayjs";
import {
useEmbedNonStylesConfig,
Expand All @@ -36,19 +35,19 @@ import classNames from "@calcom/lib/classNames";
import { APP_NAME } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import useTheme from "@calcom/lib/hooks/useTheme";
import { useTypedQuery } from "@calcom/lib/hooks/useTypedQuery";
import { HttpError } from "@calcom/lib/http-error";
import { getEveryFreqFor } from "@calcom/lib/recurringStrings";
import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
import type { RecurringEvent } from "@calcom/types/Calendar";
import { TimeFormat } from "@calcom/lib/timeFormat";
import { Button, Form, Tooltip } from "@calcom/ui";
import { FiAlertTriangle, FiCalendar, FiRefreshCw, FiUser } from "@calcom/ui/components/icon";

import { asStringOrNull } from "@lib/asStringOrNull";
import { timeZone } from "@lib/clock";
import useRouterQuery from "@lib/hooks/useRouterQuery";
import createBooking from "@lib/mutations/bookings/create-booking";
import createRecurringBooking from "@lib/mutations/bookings/create-recurring-booking";
import { parseDate, parseRecurringDates } from "@lib/parseDate";
import { parseRecurringDates, parseDate } from "@lib/parseDate";

import type { Gate, GateState } from "@components/Gates";
import Gates from "@components/Gates";
Expand Down Expand Up @@ -187,6 +186,22 @@ const BookingFields = ({
);
};

const routerQuerySchema = z
.object({
timeFormat: z.nativeEnum(TimeFormat),
rescheduleUid: z.string().optional(),
date: z
.string()
.optional()
.transform((date) => {
if (date === undefined) {
return null;
}
return date;
}),
})
.passthrough();

const BookingPage = ({
eventType,
booking,
Expand Down Expand Up @@ -225,20 +240,6 @@ const BookingPage = ({
duration = Number(queryDuration);
}

// This is a workaround for forcing the same time format for both server side rendering and client side rendering
// At initial render, we use the default time format which is 12H
const [withDefaultTimeFormat, setWithDefaultTimeFormat] = useState(true);
const parseDateFunc = useCallback(
(date: string | null | Dayjs) => {
return parseDate(date, i18n, withDefaultTimeFormat);
},
[withDefaultTimeFormat]
);
// After intial render on client side, we let parseDateFunc to use the time format from the localStorage
useEffect(() => {
setWithDefaultTimeFormat(false);
}, []);

useEffect(() => {
if (top !== window) {
//page_view will be collected automatically by _middleware.ts
Expand Down Expand Up @@ -286,6 +287,7 @@ const BookingPage = ({
return router.push({
pathname: `/booking/${uid}`,
query: {
isSuccessBookingPage: true,
allRemainingBookings: true,
email: bookingForm.getValues("responses.email"),
eventTypeSlug: eventType.slug,
Expand All @@ -295,9 +297,12 @@ const BookingPage = ({
},
});

const rescheduleUid = router.query.rescheduleUid as string;
const {
data: { timeFormat, rescheduleUid, date },
} = useTypedQuery(routerQuerySchema);

useTheme(profile.theme);
const date = asStringOrNull(router.query.date);

const querySchema = getBookingResponsesPartialSchema({
eventType: {
bookingFields: getBookingFieldsWithSystemFields(eventType),
Expand Down Expand Up @@ -401,26 +406,17 @@ const BookingPage = ({
// Calculate the booking date(s)
let recurringStrings: string[] = [],
recurringDates: Date[] = [];
const parseRecurringDatesFunc = useCallback(
(date: string | null | Dayjs, recurringEvent: RecurringEvent, recurringCount: number) => {
return parseRecurringDates(
{
startDate: date,
timeZone: timeZone(),
recurringEvent: recurringEvent,
recurringCount: recurringCount,
withDefaultTimeFormat: withDefaultTimeFormat,
},
i18n
);
},
[withDefaultTimeFormat, date, eventType.recurringEvent, recurringEventCount]
);

if (eventType.recurringEvent?.freq && recurringEventCount !== null) {
[recurringStrings, recurringDates] = parseRecurringDatesFunc(
date,
eventType.recurringEvent,
parseInt(recurringEventCount.toString())
[recurringStrings, recurringDates] = parseRecurringDates(
{
startDate: date,
timeZone: timeZone(),
recurringEvent: eventType.recurringEvent,
recurringCount: parseInt(recurringEventCount.toString()),
selectedTimeFormat: timeFormat,
},
i18n
);
}

Expand Down Expand Up @@ -550,7 +546,7 @@ const BookingPage = ({
<div className="text-sm font-medium">
{isClientTimezoneAvailable &&
(rescheduleUid || !eventType.recurringEvent?.freq) &&
`${parseDateFunc(date)}`}
`${parseDate(date, i18n, timeFormat)}`}
{isClientTimezoneAvailable &&
!rescheduleUid &&
eventType.recurringEvent?.freq &&
Expand Down Expand Up @@ -580,7 +576,7 @@ const BookingPage = ({
<FiCalendar className="ml-[2px] -mt-1 inline-block h-4 w-4 ltr:mr-[10px] rtl:ml-[10px]" />
{isClientTimezoneAvailable &&
typeof booking.startTime === "string" &&
parseDateFunc(dayjs(booking.startTime))}
parseDate(dayjs(booking.startTime), i18n, timeFormat)}
</p>
</div>
)}
Expand Down
2 changes: 1 addition & 1 deletion apps/web/components/eventtype/EventLimitsTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ const IntervalLimitItem = ({
<TextField
required
type="number"
containerClassName={`${textFieldSuffix ? "w-36" : "w-16"} -mb-1`}
containerClassName={textFieldSuffix ? "w-44 -mb-1" : "w-16 mb-0"}
placeholder={`${value}`}
min={step}
step={step}
Expand Down
19 changes: 9 additions & 10 deletions apps/web/lib/parseDate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@ import { RRule } from "rrule";

import type { Dayjs } from "@calcom/dayjs";
import dayjs from "@calcom/dayjs";
import { detectBrowserTimeFormat, TimeFormat } from "@calcom/lib/timeFormat";
import type { TimeFormat } from "@calcom/lib/timeFormat";
import { detectBrowserTimeFormat } from "@calcom/lib/timeFormat";
import type { RecurringEvent } from "@calcom/types/Calendar";

import { parseZone } from "./parseZone";

const processDate = (date: string | null | Dayjs, i18n: I18n, withDefaultTimeFormat: boolean) => {
const processDate = (date: string | null | Dayjs, i18n: I18n, selectedTimeFormat?: TimeFormat) => {
const parsedZone = parseZone(date);
if (!parsedZone?.isValid()) return "Invalid date";
const formattedTime = parsedZone?.format(
withDefaultTimeFormat ? TimeFormat.TWELVE_HOUR : detectBrowserTimeFormat
);
const formattedTime = parsedZone?.format(selectedTimeFormat || detectBrowserTimeFormat);
return formattedTime + ", " + dayjs(date).toDate().toLocaleString(i18n.language, { dateStyle: "full" });
};

export const parseDate = (date: string | null | Dayjs, i18n: I18n, withDefaultTimeFormat: boolean) => {
export const parseDate = (date: string | null | Dayjs, i18n: I18n, selectedTimeFormat?: TimeFormat) => {
if (!date) return ["No date"];
return processDate(date, i18n, withDefaultTimeFormat);
return processDate(date, i18n, selectedTimeFormat);
};

export const parseRecurringDates = (
Expand All @@ -28,13 +27,13 @@ export const parseRecurringDates = (
timeZone,
recurringEvent,
recurringCount,
withDefaultTimeFormat,
selectedTimeFormat,
}: {
startDate: string | null | Dayjs;
timeZone?: string;
recurringEvent: RecurringEvent | null;
recurringCount: number;
withDefaultTimeFormat: boolean;
selectedTimeFormat?: TimeFormat;
},
i18n: I18n
): [string[], Date[]] => {
Expand All @@ -54,7 +53,7 @@ export const parseRecurringDates = (
});
const dateStrings = times.map((t) => {
// finally; show in local timeZone again
return processDate(t.tz(timeZone), i18n, withDefaultTimeFormat);
return processDate(t.tz(timeZone), i18n, selectedTimeFormat);
});

return [dateStrings, times.map((t) => t.toDate())];
Expand Down
2 changes: 1 addition & 1 deletion apps/web/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@calcom/web",
"version": "2.7.2",
"version": "2.7.3",
"private": true,
"scripts": {
"analyze": "ANALYZE=true next build",
Expand Down
20 changes: 2 additions & 18 deletions apps/web/pages/auth/admin-login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import Link from "next/link";
import { useRouter } from "next/router";
import { useState } from "react";
import { FormProvider, useForm } from "react-hook-form";
import { FaGoogle } from "react-icons/fa";

import { SAMLLogin } from "@calcom/features/auth/SAMLLogin";
import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
Expand Down Expand Up @@ -40,7 +39,6 @@ interface LoginValues {

export default function Login({
csrfToken,
isGoogleLoginEnabled,
isSAMLLoginEnabled,
samlTenantID,
samlProductID,
Expand Down Expand Up @@ -123,7 +121,6 @@ export default function Login({
title={t("login")}
description={t("login")}
showLogo
heading={twoFactorRequired ? t("2fa_code") : t("welcome_back")}
footerText={twoFactorRequired ? (!totpEmail ? TwoFactorFooter : ExternalTotpFooter) : null}>
<FormProvider {...methods}>
<form onSubmit={methods.handleSubmit(onSubmit)} data-testid="login-form">
Expand Down Expand Up @@ -173,21 +170,8 @@ export default function Login({
</form>
{!twoFactorRequired && (
<>
{(isGoogleLoginEnabled || isSAMLLoginEnabled) && <hr className="my-8" />}
{isSAMLLoginEnabled && <hr className="my-8" />}
<div className="space-y-3">
{isGoogleLoginEnabled && (
<Button
color="secondary"
className="w-full justify-center"
data-testid="google"
StartIcon={FaGoogle}
onClick={async (e) => {
e.preventDefault();
await signIn("google");
}}>
{t("signin_with_google")}
</Button>
)}
{isSAMLLoginEnabled && (
<SAMLLogin
samlTenantID={samlTenantID}
Expand Down Expand Up @@ -267,7 +251,7 @@ const _getServerSideProps = async function getServerSideProps(context: GetServer
}
return {
props: {
csrfToken: await getCsrfToken(context),
csrfToken: (await getCsrfToken(context)) || null,
trpcState: ssr.dehydrate(),
isGoogleLoginEnabled: IS_GOOGLE_LOGIN_ENABLED,
isSAMLLoginEnabled,
Expand Down
6 changes: 3 additions & 3 deletions apps/web/pages/booking/[uid].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ const querySchema = z.object({
cancel: stringToBoolean,
changes: stringToBoolean,
reschedule: stringToBoolean,
isSuccessBookingPage: z.string().optional(),
isSuccessBookingPage: stringToBoolean,
formerTime: z.string().optional(),
email: z.string().optional(),
seatReferenceUid: z.string().optional(),
Expand Down Expand Up @@ -485,7 +485,7 @@ export default function Success(props: SuccessProps) {
</>
)}
<div className="font-medium">{t("what")}</div>
<div className="col-span-2 mb-6 last:mb-0">{eventName}</div>
<div className="col-span-2 mb-6 last:mb-0">{props.bookingInfo.title}</div>
<div className="font-medium">{t("when")}</div>
<div className="col-span-2 mb-6 last:mb-0">
{reschedule && !!formerTime && (
Expand Down Expand Up @@ -527,7 +527,7 @@ export default function Success(props: SuccessProps) {
</div>
)}
{bookingInfo?.attendees.map((attendee) => (
<div key={attendee.name} className="mb-3 last:mb-0">
<div key={attendee.name + attendee.email} className="mb-3 last:mb-0">
{attendee.name && <p>{attendee.name}</p>}
<p data-testid={`attendee-${attendee.email}`} className="text-bookinglight">
{attendee.email}
Expand Down
Loading