Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6d4c69b
Sending the error to the stripe webshook response
Stephen10121 Mar 12, 2026
8af0896
Creating the subscription urls when the user signs up
Stephen10121 Mar 12, 2026
c591e76
Setting the avatar fallback to the users name
Stephen10121 Mar 12, 2026
73cc961
Implemented the login with google oath
Stephen10121 Mar 13, 2026
cad202f
Showing dashboard button in the home page when the user is logged in
Stephen10121 Mar 13, 2026
1e42043
Removed any mentions of userEmail
Stephen10121 Mar 13, 2026
972f739
Set the toast theme mode to light
Stephen10121 Mar 13, 2026
acc9ed8
Removed the warning about initail state because i manually update the…
Stephen10121 Mar 13, 2026
3b88377
Moved most of the planning center types into the integrationModel
Stephen10121 Mar 13, 2026
02eab43
using the customerid as the auth method because the endpoint doesnt r…
Stephen10121 Mar 13, 2026
42f5d89
Working on showing the integrations added
Stephen10121 Mar 14, 2026
f7ce36a
Added the login page and form.
Stephen10121 Mar 14, 2026
6e97efb
Added privacy policy and ToS
Stephen10121 Mar 14, 2026
3de256c
Made it possible to add the integrations through oath2
Stephen10121 Mar 14, 2026
1d4c6b7
Made sure the integration works even when another user integrates an …
Stephen10121 Mar 17, 2026
fe9e60c
Made the calendar slug section more consise and started using remote …
Stephen10121 Mar 18, 2026
8d5b5f5
Working on moving the image feed section into remote functions
Stephen10121 Mar 18, 2026
177ca5c
Almost finished with updating the image feed section of the page
Stephen10121 Mar 20, 2026
c7894a5
Merge branch 'main' of https://github.com/Stephen10121/infosections
Stephen10121 Mar 20, 2026
fc78e28
Moved the included calendars code to new file and used remote functions
Stephen10121 Mar 24, 2026
0ab2e96
Moved the refetch event function to a remote function
Stephen10121 Mar 24, 2026
2185eb1
Moved the event list to the new remote function schema
Stephen10121 Mar 24, 2026
a3f42e8
Made the backend use the integrations instead of old style
Stephen10121 Mar 24, 2026
ae1cb6f
Now saving what service the event was fetched from
Stephen10121 Mar 24, 2026
9e1fe31
Removed planning center related ui components if the user doesnt have…
Stephen10121 Mar 24, 2026
a91c511
Moved event fetching to remote functions
Stephen10121 Mar 24, 2026
76d6dcf
Fixed the bug that other users with existing integrations cant get ev…
Stephen10121 Mar 24, 2026
52003f6
Fixed mobile sidebar behavior. also hide integration when sidebar is …
Stephen10121 Mar 24, 2026
b3593b2
Added services to the planning center oath scope (will make a feature…
Stephen10121 Mar 24, 2026
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
11 changes: 8 additions & 3 deletions automations/updateEvents.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"time"

"github.com/Stephen10121/infosections/functions"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
)

Expand All @@ -27,14 +28,18 @@ func UpdateEventInstances(app *pocketbase.PocketBase) {
)
functions.GetAndStoreNextThreeEvents(users[i].Id, app)

record, err := app.FindRecordById("users", users[i].Id)
integration, err := app.FindFirstRecordByFilter(
"integration",
"owner = {:owner}",
dbx.Params{"owner": users[i].Id},
)
if err != nil {
continue
}

record.Set("lastEventsFetch", time.Now())
integration.Set("lastEventsFetch", time.Now())

err = app.Save(record)
err = app.Save(integration)
if err != nil {
continue
}
Expand Down
68 changes: 0 additions & 68 deletions enpoints/newUserLoggedIn.go

This file was deleted.

20 changes: 12 additions & 8 deletions enpoints/updateSpecificUserEvents.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ import (
func UpdateSpecificUserEvents(se *core.ServeEvent, app *pocketbase.PocketBase) {
se.Router.PATCH("/updateSpecificUserEvents/{id}", func(e *core.RequestEvent) error {
id := e.Request.PathValue("id")
authenticity := e.Request.Header.Get("X-PCO-Webhooks-Authenticity")
customerId := e.Request.Header.Get("X-PCO-Webhooks-Authenticity")

if len(id) == 0 || len(authenticity) == 0 {
if len(id) == 0 || len(customerId) == 0 {
return e.JSON(422, map[string]string{
"msg": "Missing parameters",
})
}

_, err := app.FindFirstRecordByFilter(
userRecord, err := app.FindFirstRecordByFilter(
"users",
"id = {:id} && authToken = {:authToken}",
dbx.Params{"id": id, "authToken": authenticity},
"id = {:id} && customerId = {:customerId}",
dbx.Params{"id": id, "customerId": customerId},
)

if err != nil {
Expand All @@ -34,14 +34,18 @@ func UpdateSpecificUserEvents(se *core.ServeEvent, app *pocketbase.PocketBase) {

functions.GetAndStoreNextThreeEvents(id, app)

record, err := app.FindRecordById("users", id)
integration, err := app.FindFirstRecordByFilter(
"integration",
"owner = {:owner}",
dbx.Params{"owner": userRecord.Id},
)
if err != nil {
return e.Error(500, "Internal Error", "Failed to update user.")
}

record.Set("lastEventsFetch", time.Now())
integration.Set("lastEventsFetch", time.Now())

err = app.Save(record)
err = app.Save(integration)
if err != nil {
return e.Error(500, "Internal Error", "Failed to update user.")
}
Expand Down
71 changes: 0 additions & 71 deletions enpoints/userSubscribes.go

This file was deleted.

7 changes: 7 additions & 0 deletions frontend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).

Emails i need to add:
dmca@infosections.com
contact@infosections.com
privacy@infosections.com
support@infosections.com
sales@infosections.com

## Creating a project

If you're seeing this, you've probably already done this step. Congrats!
Expand Down
8 changes: 4 additions & 4 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"devDependencies": {
"@internationalized/date": "^3.10.0",
"@lucide/svelte": "^0.544.0",
"@lucide/svelte": "^0.561.0",
"@sveltejs/kit": "^2.53.4",
"@sveltejs/vite-plugin-svelte": "^6.2.0",
"@tailwindcss/vite": "^4.1.13",
Expand Down
31 changes: 24 additions & 7 deletions frontend/src/lib/IncludedCalendars.svelte
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
<script lang="ts">
import { addIFeedIncludedCalendar, removeIFeedIncludedCalendar } from "./endpointCalls/updateIfeedIncludedCalendars";
import { removeIncludedCalendarsToIFeed, updateIncludedCalendarsToIFeed } from "../routes/(mainWebsite)/dashboard/image-feeds/IFeedIncludeCalActions.remote";
import * as Dialog from "$lib/components/ui/dialog/index.js";
import AnIncludedCalendar from "./AnIncludedCalendar.svelte";
import * as Empty from "$lib/components/ui/empty/index.js";
import { Button } from "@/components/ui/button";
import { invalidateAll } from "$app/navigation";
import { type CalendarDBModel } from "@/utils";
import { CalendarDays } from "@lucide/svelte";
import { toast } from "svelte-sonner";
import ACalToAdd from "./ACalToAdd.svelte";
import { toast } from "svelte-sonner";

let {
includedCalendars,
Expand All @@ -31,16 +30,34 @@
return
}

const success = await addIFeedIncludedCalendar(iFeedId, calsToAdd);
const updatingIncludedCalendars = toast.loading("Updating List", { duration: Number.POSITIVE_INFINITY });
const result = await updateIncludedCalendarsToIFeed({
currentFeedID: iFeedId,
calIds: calsToAdd
});
toast.dismiss(updatingIncludedCalendars);
includeACalendarPopup = false;

if (success) invalidateAll();
if (result.error) {
toast.error(result.msg);
} else {
toast.success(result.msg);
}
}

async function removeCal(calId: string) {
const success = await removeIFeedIncludedCalendar(iFeedId, calId);
const removingCalToast = toast.loading("Removing included calendar", { duration: Number.POSITIVE_INFINITY });
const res = await removeIncludedCalendarsToIFeed({
currentFeedID: iFeedId,
calId
});
toast.dismiss(removingCalToast);

if (success) invalidateAll();
if (res.error) {
toast.error(res.msg);
} else {
toast.success(res.msg);
}
}

$effect(() => {
Expand Down
Binary file added frontend/src/lib/assets/breeze.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions frontend/src/lib/components/ui/carousel/carousel.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@
api: undefined,
scrollPrev,
scrollNext,
// svelte-ignore state_referenced_locally
orientation,
canScrollNext: false,
canScrollPrev: false,
handleKeyDown,
// svelte-ignore state_referenced_locally
options: opts,
// svelte-ignore state_referenced_locally
plugins,
onInit,
scrollSnaps: [],
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/lib/components/ui/checkbox/checkbox.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
bind:ref
data-slot="checkbox"
class={cn(
"border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive shadow-xs peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border outline-none transition-shadow focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
"border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
className
)}
bind:checked
Expand Down
Loading