From 866e8eea21b38e75d6d5298a2b3bb49cf34314de Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Wed, 4 Oct 2023 14:51:25 -0500 Subject: [PATCH 1/8] chore: remove bing ping, no longer supported by bing --- .github/workflows/release-success.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/release-success.yml b/.github/workflows/release-success.yml index 2ec26ef..e670fd8 100644 --- a/.github/workflows/release-success.yml +++ b/.github/workflows/release-success.yml @@ -12,9 +12,6 @@ jobs: - name: Ping Google run: | curl https://www.google.com/ping?sitemap=https://thatconference.com/sitemap.xml - - name: Ping Bing - run: | - curl https://www.bing.com/ping?sitemap=https://thatconference.com/sitemap.xml - name: Purge CloudFlare run: | curl -X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.CLOUDFLARE_THATCONFERENCE_ID }}/purge_cache" -H "Authorization: Bearer ${{ secrets.CLOUDFLARE_PURGE_TOKEN }}" -H "Content-Type:application/json" --data '{"purge_everything":true}' From 2abd3683611b19f892ac402ad9c52254e1e104b5 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Wed, 4 Oct 2023 16:16:03 -0500 Subject: [PATCH 2/8] refactor: order success page --- package.json | 2 +- src/_elements/links/Standard.svelte | 2 + .../(root)/orders/canceled/+page.svelte | 2 +- .../(root)/orders/success/+layout.svelte | 2 + src/routes/(root)/orders/success/+page.svelte | 92 ++++++++++++------- .../support/staying-up-to-date/+page.svelte | 3 +- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index f13a7d9..77f319c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "thatconference.com", - "version": "5.0.5", + "version": "5.0.6", "description": "THATConference.com website", "main": "index.js", "type": "module", diff --git a/src/_elements/links/Standard.svelte b/src/_elements/links/Standard.svelte index cadce05..3666fac 100644 --- a/src/_elements/links/Standard.svelte +++ b/src/_elements/links/Standard.svelte @@ -1,11 +1,13 @@ + + diff --git a/src/routes/(root)/orders/success/+page.svelte b/src/routes/(root)/orders/success/+page.svelte index aa8cc64..b902662 100644 --- a/src/routes/(root)/orders/success/+page.svelte +++ b/src/routes/(root)/orders/success/+page.svelte @@ -12,7 +12,7 @@ description: 'Your payment was successfully received.', openGraph: { type: 'website', - url: `https://thatconference.com/orders/success/` + url: `https://thatconference.com/orders/success` }, noindex: true, nofollow: true @@ -35,9 +35,11 @@ const eventLocation = $page.url.searchParams.has('EL') ? $page.url.searchParams.get('EL') : undefined; - const targetLocations = $page.url.searchParams.has('TL') - ? $page.url.searchParams.getAll('TL') - : []; + let targetLocations = []; + if ($page.url.searchParams.has('TL')) { + targetLocations = $page.url.searchParams.getAll('TL'); + targetLocations = targetLocations.map((tl) => tl.toUpperCase()); + } @@ -73,35 +75,38 @@

- View Your Order History + View Your Order History
-

Next steps

-

Based on your purchase we have a few follow up things for you.

- {#if eventLocation} +

Next steps

+

Based on your purchase we have follow-up things for you.

+ {#if targetLocations.length > 0} -

You have event tickets!!!

+

You have event tickets!

{#if targetLocations.includes('AT')}

- First things first, let's get your travel and rooms sorted. Just head over to our - travel page for room blocks, addresses, and other details. + Time to get your travel and hotel rooms sorted. Head over to our travel page for hotel + room blocks, addresses, and other details.

{#if eventLocation.toUpperCase() === 'WI'} - Book Your Travel To Wisconsin + Book Your Travel To Wisconsin {/if} {#if eventLocation.toUpperCase() === 'TX'} - Book Your Travel To Texas + Book Your Travel To Texas {/if}
-

+ {/if} {#if targetLocations.includes('ON')} @@ -113,34 +118,41 @@

- Create an Activity + Create an Activity
{/if} {/if} {/if} {#if isBulkPurchase} -

Action Required - You have unallocated tickets.

+

Action Required – You have unallocated tickets

- You've purchased multiple tickets, and some or all of those tickets now need to be - allocated to someone. To gain access, that someone has to have a valid account on - thatconference.com. You need that user's email address to assign the ticket. Once - assigned, thatconference.com will contact them and take care of the rest. + You've purchased multiple tickets, and those tickets need to be allocated (assigned) to + someone. The process is easy, all you need to transfer a ticket is the + profile email address of the person you are transferring the ticket to. + We've put together the steps + in this handy guide + for your reference. +

+

+ Remember to allocate a ticket to yourself if you're attending!

{#if targetLocations.includes('AT')}

- If one of those tickets is for a spouse or child, they do not need to be allocated, but + If any of those tickets are for a spouse or child, they don't need to be allocated, but you will need to answer the follow-up questions on their behalf.

{/if}
- Allocate Tickets + Allocate Tickets Now
{/if} {#if isMembership} -

Thank you purchasing an annual membership.

+

Thank you purchasing an annual membership

We're grateful to have you as an annual member. Your membership helps us run the daily operations while also having direct input into how things evolve. You will soon see @@ -156,24 +168,40 @@

+ {#if targetLocations.length > 0} +

+ Say hello to Meet THAT Camper – your weekly chance to connect with a + fellow geek before THAT Conference. Every Monday at 9 AM central, we'll introduce you to + another attendee headed to the event. Getting started is easy, go to your + notification preferences and enable the Meet THAT Camper notification. It's that simple, + and you can shut it off at any time. There are more details about Meet THAT Camper on the notification + preferences page. +

+ {/if} -

Lastly, we’re here to help.

+

Lastly, we're here to help

We're here to support you and the community. Anything we can do to improve, or if you wish there was a particular feature, please tell us. Our entire platform is open source, and diff --git a/src/routes/(root)/support/staying-up-to-date/+page.svelte b/src/routes/(root)/support/staying-up-to-date/+page.svelte index f03887a..d75eb9e 100644 --- a/src/routes/(root)/support/staying-up-to-date/+page.svelte +++ b/src/routes/(root)/support/staying-up-to-date/+page.svelte @@ -121,7 +121,8 @@ lg:max-w-none">

Create an Activity - Check out the upcoming Activities + Check out the upcoming Activities
From 6a863f47c6a215d9ce9fb42eb3b2c60521a5079e Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Thu, 5 Oct 2023 13:56:12 -0500 Subject: [PATCH 3/8] fix: phone number check in shared profiles api only accepts valid phone number or null for phone number value --- src/lib/formSchemas/sharedProfile.js | 3 +- .../profiles/shared/sharedProfileForm.svelte | 40 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/lib/formSchemas/sharedProfile.js b/src/lib/formSchemas/sharedProfile.js index d755661..caac47d 100644 --- a/src/lib/formSchemas/sharedProfile.js +++ b/src/lib/formSchemas/sharedProfile.js @@ -14,5 +14,6 @@ export default z.object({ company: z.string().trim().nullable().optional(), jobTitle: z.string().trim().nullable().optional(), - phone: z.string().trim().regex(PHONE_NUMBER_REGEX).optional() // todo.. this feels werid. + // THAT api cannot accept '' as phone value. Must be valid phone # or null + phone: z.string().trim().regex(PHONE_NUMBER_REGEX).or(z.literal(null)) // todo.. this feels werid. }); diff --git a/src/routes/(admin my)/my/profiles/shared/sharedProfileForm.svelte b/src/routes/(admin my)/my/profiles/shared/sharedProfileForm.svelte index 14f10fe..95420c7 100644 --- a/src/routes/(admin my)/my/profiles/shared/sharedProfileForm.svelte +++ b/src/routes/(admin my)/my/profiles/shared/sharedProfileForm.svelte @@ -34,25 +34,27 @@ let countryCodeSelect = countryCode?.options?.find(({ value }) => value === $form.country); let formattedPhoneNumber = ''; function formatPhoneNumber(event) { - // Remove all non-numeric characters from the input - $form.phone = event.target.value.replace(/\D/g, ''); - - // Always add a plus sign before the number - $form.phone = '+' + $form.phone; - - // Format the phone number nicely - if ($form.phone.startsWith('+1')) { - // Format as a US number - formattedPhoneNumber = $form.phone.replace( - /^(\+\d{1})(\d{3})(\d{3})(\d{4})$/, - '$1 ($2) $3-$4' - ); - } else { - // Format as an international number - formattedPhoneNumber = $form.phone.replace( - /^(\+\d{2})(\d{1,3})(\d{1,3})(\d{1,4})$/, - '$1 $2 $3 $4' - ); + if (!$form.phone || $form.phone === '+') $form.phone = null; + if (event.target.value) { + // Remove all non-numeric characters from the input + $form.phone = event.target.value.replace(/\D/g, ''); + + // Always add a plus sign before the number + $form.phone = '+' + $form.phone; + // Format the phone number nicely + if ($form.phone.startsWith('+1')) { + // Format as a US number + formattedPhoneNumber = $form.phone.replace( + /^(\+\d{1})(\d{3})(\d{3})(\d{4})$/, + '$1 ($2) $3-$4' + ); + } else { + // Format as an international number + formattedPhoneNumber = $form.phone.replace( + /^(\+\d{2})(\d{1,3})(\d{1,3})(\d{1,4})$/, + '$1 $2 $3 $4' + ); + } } } From 75b2088eada5162049bc71e90eb4276f2a5dfe01 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Thu, 5 Oct 2023 14:03:22 -0500 Subject: [PATCH 4/8] chore: copy update on success page --- src/routes/(root)/orders/success/+page.svelte | 159 +++++++++--------- 1 file changed, 84 insertions(+), 75 deletions(-) diff --git a/src/routes/(root)/orders/success/+page.svelte b/src/routes/(root)/orders/success/+page.svelte index b902662..aa04f1c 100644 --- a/src/routes/(root)/orders/success/+page.svelte +++ b/src/routes/(root)/orders/success/+page.svelte @@ -79,84 +79,104 @@ >View Your Order History - {#if eventLocation} + {#if eventLocation && targetLocations.length > 0}

Next steps

-

Based on your purchase we have follow-up things for you.

+

Based on your purchase we have some follow-ups for you.

+

You're going to THAT Conference!

- {#if targetLocations.length > 0} -

You have event tickets!

- - {#if targetLocations.includes('AT')} -

- Time to get your travel and hotel rooms sorted. Head over to our travel page for hotel - room blocks, addresses, and other details. -

- -
- {#if eventLocation.toUpperCase() === 'WI'} - Book Your Travel To Wisconsin - {/if} - {#if eventLocation.toUpperCase() === 'TX'} - Book Your Travel To Texas - {/if} -
- - - {/if} + {#if targetLocations.includes('AT')} +

+ Time to get your travel and hotel rooms sorted. Head over to our travel page for hotel + room blocks, addresses, and other details. +

- {#if targetLocations.includes('ON')} -

- No further action is required for your ON THAT tickets. - Ok, small lie there. You now have access to that event and are free to start adding to - the schedule. That's correct; you can add sessions as well, and make sure to select the - right event. -

- -
- Create an Activity -
- {/if} +
+ {#if eventLocation.toUpperCase() === 'WI'} + Book Your Travel To Wisconsin + {/if} + {#if eventLocation.toUpperCase() === 'TX'} + Book Your Travel To Texas + {/if} +
+ +

Dietary Requirements and T-Shirts

+

+ Do you have dietary requirements? THAT Conference works with the Kalahari catering team + to provide meals that encompass a variety of dietary choices. At every meal, we strive + to provide gluten-free, vegetarian and vegan options. Menus are posted daily and labels + are displayed next to each food item to help you make the best decision based on your + needs. If you have a severe dietary requirement, please email us at hello@that.us so we can work together in finding the right solution to + fit your needs. +

+

+ All Camper, Campmate and Geekling tickets include an official THAT t-shirt. During + on-site registration, you can choose your desired shirt size. We order a wide range of + sizes for each event. If for some reason, we run out of the size you’d like, we’ll send + you one after the event! +

{/if} - {/if} - {#if isBulkPurchase} -

Action Required – You have unallocated tickets

-

- You've purchased multiple tickets, and those tickets need to be allocated (assigned) to - someone. The process is easy, all you need to transfer a ticket is the - profile email address of the person you are transferring the ticket to. - We've put together the steps - in this handy guide - for your reference. -

-

- Remember to allocate a ticket to yourself if you're attending! -

- {#if targetLocations.includes('AT')} + {#if targetLocations.includes('ON')}

- If any of those tickets are for a spouse or child, they don't need to be allocated, but - you will need to answer the follow-up questions on their behalf. + No further action is required for your ON THAT tickets. + Ok, small lie there. You now have access to that event and are free to start adding to the + schedule. That's correct; you can add sessions as well, and make sure to select the right + event.

+ +
+ Create an Activity +
{/if} + {#if isBulkPurchase} +

Action Required – You have unallocated tickets

+

+ You've purchased multiple tickets, and those tickets need to be allocated (assigned) to + someone. The process is easy. All you need to transfer a ticket is the + profile email address of the person you are transferring the ticket to. + We've put together the steps + in this handy guide + for your reference. +

+

+ Remember to allocate a ticket to yourself if you're attending! +

+ {#if targetLocations.includes('AT')} +

If any of the tickets are for a spouse or child, they don't need to be allocated.

+ {/if} +
+ Allocate Tickets Now +
+ {/if} +

Meet THAT Camper

+

+ Say hello to Meet THAT Camper – your weekly chance to connect with a fellow geek before + THAT Conference. Every Monday at 9 AM central, we'll introduce you to another attendee + headed to the event. Getting started is easy, go to your + notification preferences and enable the Meet THAT Camper notification. It's that simple, + and you can shut it off at any time. There are more details about Meet THAT Camper on the notification + preferences page. +

- Allocate Tickets Now + Meet THAT Camper
- {/if} - - {#if isMembership} -

Thank you purchasing an annual membership

+ {:else if isMembership} +

Thank you for purchasing an annual membership

We're grateful to have you as an annual member. Your membership helps us run the daily operations while also having direct input into how things evolve. You will soon see - another email with a signup link to our private discord server. + another email with a signup link to our member's private discord server.

Once again, Thank You!

{/if} @@ -189,17 +209,6 @@
  • Signup for our newsletter!
  • - {#if targetLocations.length > 0} -

    - Say hello to Meet THAT Camper – your weekly chance to connect with a - fellow geek before THAT Conference. Every Monday at 9 AM central, we'll introduce you to - another attendee headed to the event. Getting started is easy, go to your - notification preferences and enable the Meet THAT Camper notification. It's that simple, - and you can shut it off at any time. There are more details about Meet THAT Camper on the notification - preferences page. -

    - {/if}

    Lastly, we're here to help

    From 819d1feb5ce13db8d365f5bfbf272d7a1a3593e2 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Thu, 5 Oct 2023 17:26:56 -0500 Subject: [PATCH 5/8] refactor: ticket refund copy. refund statement added to order success --- src/routes/(root)/orders/_components/_Cart.svelte | 2 +- src/routes/(root)/orders/success/+page.svelte | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/routes/(root)/orders/_components/_Cart.svelte b/src/routes/(root)/orders/_components/_Cart.svelte index c7daa51..8f97251 100644 --- a/src/routes/(root)/orders/_components/_Cart.svelte +++ b/src/routes/(root)/orders/_components/_Cart.svelte @@ -191,7 +191,7 @@ {#if activateRefundPolicyModal === true} + text="Ticket refunds will not be issued on any ticket 30 days before the event or thereafter. Prior to that, a $30.00 (per ticket) processing fee will be applied to each Camper ticket refund and a $10.00 (per ticket) processing fee will be applied to each Geekling and Campmate ticket refund. Memberships are non-refundable.">

    openRefundPolicyModal(false)}>Cancel Agree and Continue diff --git a/src/routes/(root)/orders/success/+page.svelte b/src/routes/(root)/orders/success/+page.svelte index aa04f1c..e24e8ba 100644 --- a/src/routes/(root)/orders/success/+page.svelte +++ b/src/routes/(root)/orders/success/+page.svelte @@ -139,8 +139,8 @@

    You've purchased multiple tickets, and those tickets need to be allocated (assigned) to someone. The process is easy. All you need to transfer a ticket is the - profile email address of the person you are transferring the ticket to. - We've put together the steps + profile email address of the person you are transferring + the ticket to. We've put together the steps in this handy guide for your reference. @@ -157,6 +157,15 @@ >Allocate Tickets Now

    {/if} + +

    Ticket Refunds

    +

    + Ticket refunds will not be issued on any ticket 30 days before + the event or thereafter. Prior to that, a $30.00 (per ticket) processing fee will be applied + to each Camper ticket refund and a $10.00 (per ticket) processing fee will be applied to each + Geekling and Campmate ticket refund. +

    +

    Meet THAT Camper

    Say hello to Meet THAT Camper – your weekly chance to connect with a fellow geek before From cf1c090e4ada62f5f4beb84915ad40a2577af826 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Thu, 5 Oct 2023 17:39:01 -0500 Subject: [PATCH 6/8] fix: markup --- .../(root)/orders/success/claim-ticket/+page.svelte | 6 +++--- .../(root)/support/transfer-a-ticket/+page.svelte | 13 ++++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/routes/(root)/orders/success/claim-ticket/+page.svelte b/src/routes/(root)/orders/success/claim-ticket/+page.svelte index e5f6178..cd4ed44 100644 --- a/src/routes/(root)/orders/success/claim-ticket/+page.svelte +++ b/src/routes/(root)/orders/success/claim-ticket/+page.svelte @@ -49,9 +49,9 @@ When you get to the event make sure you check in at registration to get your sponsor badge.

  • - On Monday at 1:00 PM there will be a sponsor meeting in the Open Spaces area. - This is an opportunity to meet one another, discuss the event, answer any questions, and get things - kicked off before the early registration meet and greet that evening. + On Monday at 1:00 PM there will be a sponsor meeting in the Open + Spaces area. This is an opportunity to meet one another, discuss the event, answer any questions, + and get things kicked off before the early registration meet and greet that evening.
  • diff --git a/src/routes/(root)/support/transfer-a-ticket/+page.svelte b/src/routes/(root)/support/transfer-a-ticket/+page.svelte index 2783276..a8b7fa2 100644 --- a/src/routes/(root)/support/transfer-a-ticket/+page.svelte +++ b/src/routes/(root)/support/transfer-a-ticket/+page.svelte @@ -49,10 +49,13 @@

    - Transferring is easy, just enter a valid THAT Conference account profile email address and - click transfer. The page will inform you if the email address is not found. Check with the - person you are transferring the ticket to for the email address they're using in their profile - (Note: Their profile email address may be different than their login email address) + Transferring is easy, just enter a valid THAT Conference profile email address and click + transfer. The page will inform you if the email address is not found. Check with the person + you are transferring the ticket to for the email address they're using in their profile. +

    +

    + (Note: Their profile email address may be different than their login + email address)

    @@ -75,7 +78,7 @@

    Family Tickets

    - All family tickets (Campmate, Geekling, etc.) also need to be assigned to someone. If the + All family tickets (Campmate, Geekling, etc.) also should to be assigned to someone. If the family member isn't old enough to have a THAT account or doesn't wish to have one, then simply assign the family ticket to the Camper they are coming with.

    From 0514d6ceaa64ea5bfc3386bfeba322e801eea9a2 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Fri, 6 Oct 2023 08:10:17 -0500 Subject: [PATCH 7/8] refactor: use nullable() for phone zod schema refactor: remove anchor, remove reference to anchor --- src/lib/formSchemas/sharedProfile.js | 2 +- src/routes/(root)/orders/success/+layout.svelte | 2 -- src/routes/(root)/orders/success/+page.svelte | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/formSchemas/sharedProfile.js b/src/lib/formSchemas/sharedProfile.js index caac47d..3ed7441 100644 --- a/src/lib/formSchemas/sharedProfile.js +++ b/src/lib/formSchemas/sharedProfile.js @@ -15,5 +15,5 @@ export default z.object({ jobTitle: z.string().trim().nullable().optional(), // THAT api cannot accept '' as phone value. Must be valid phone # or null - phone: z.string().trim().regex(PHONE_NUMBER_REGEX).or(z.literal(null)) // todo.. this feels werid. + phone: z.string().trim().regex(PHONE_NUMBER_REGEX).or(z.string().nullable()) // todo.. this feels werid. }); diff --git a/src/routes/(root)/orders/success/+layout.svelte b/src/routes/(root)/orders/success/+layout.svelte index c713366..61f23de 100644 --- a/src/routes/(root)/orders/success/+layout.svelte +++ b/src/routes/(root)/orders/success/+layout.svelte @@ -12,7 +12,5 @@
    - -
    diff --git a/src/routes/(root)/orders/success/+page.svelte b/src/routes/(root)/orders/success/+page.svelte index e24e8ba..1feb7a0 100644 --- a/src/routes/(root)/orders/success/+page.svelte +++ b/src/routes/(root)/orders/success/+page.svelte @@ -216,7 +216,7 @@ >your own calendar. -
  • Signup for our newsletter!
  • +
  • Signup for our newsletter!
  • Lastly, we're here to help

    From 62c8e2b64200ee2e6859a0dd6ee6bc75b67313e8 Mon Sep 17 00:00:00 2001 From: Brett Slaski Date: Fri, 6 Oct 2023 08:35:31 -0500 Subject: [PATCH 8/8] fix: order history link to open _blank --- src/routes/(root)/orders/success/+page.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/(root)/orders/success/+page.svelte b/src/routes/(root)/orders/success/+page.svelte index 1feb7a0..19241f1 100644 --- a/src/routes/(root)/orders/success/+page.svelte +++ b/src/routes/(root)/orders/success/+page.svelte @@ -71,7 +71,8 @@ >If you do not see those, please check your junk/spam folders, as sometimes we manage to land there accidentally. At any time you can view your - order history and reprint your receipt. + order history and reprint + your receipt.