forked from github/plane
ecdd1f1d03
* fix: onboarding invitations overflow (#1575)
* fix: onboarding invitations overflow
* fix: user avatar in the notification card
* style: update graph grid color
* fix: no 'Create by me' label coming up (#1573)
* feat: added new issue subscriber table
* dev: notification model
* feat: added CRUD operation for issue subscriber
* Revert "feat: added CRUD operation for issue subscriber"
This reverts commit b22e062576
.
* feat: added CRUD operation for issue subscriber
* dev: notification models and operations
* dev: remove delete endpoint response data
* dev: notification endpoints and fix bg worker for saving notifications
* feat: added list and unsubscribe function in issue subscriber
* dev: filter by snoozed and response update for list and permissions
* dev: update issue notifications
* dev: notification segregation
* dev: update notifications
* dev: notification filtering
* dev: add issue name in notifications
* dev: notification new endpoints
* fix: pushing local settings
* feat: notification workflow setup and made basic UI
* style: improved UX with toast alerts and other interactions
refactor: changed classnames according to new theme structure, changed all icons to material icons
* feat: showing un-read notification count
* feat: not showing 'subscribe' button on issue created by user & assigned to user
not showing 'Create by you' for view & guest of the workspace
* fix: 'read' -> 'unread' heading, my issue wrong filter
* feat: made snooze dropdown & modal
feat: switched to calendar
* fix: minor ui fixes
* feat: snooze modal date/time select
* fix: params for read/un-read notification
* style: snooze notification modal
* fix: no label for 'Create by me'
* fix: no label for 'Create by me'
* fix: removed console log
* fix: tooltip going behind popover
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* style: tooltip on notification header actions (#1577)
* style: tooltip on notification header
* chore: update tooltip content
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* fix: user migrations for back population (#1578)
* fix: total notifications count (#1579)
* fix: notification card (#1583)
* feat: add new icons package (#1586)
* feat: add material icons package
* chore: replace issue view icons
* chore: notification ordering (#1584)
* fix: uuid error when cycle and module updates (#1585)
* refactor: height of popover & api fetch call (#1587)
* fix: snooze dropdown overflow (#1588)
* fix: notification subscribe endpoint (#1593)
* refactor: height of popover & api fetch call
* fix: notification subscribe endpoint
* chore: notification empty state overflow (#1592)
* chore: notification empty state overflow
* fix: white logo
* fix: custom theme default values
* fix: custom theme default values
* fix: issues count to remove archived issues (#1591)
* dev: background migration for user custom themes (#1590)
---------
Co-authored-by: Dakshesh Jain <65905942+dakshesh14@users.noreply.github.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
94 lines
3.5 KiB
TypeScript
94 lines
3.5 KiB
TypeScript
import { useEffect, useState } from "react";
|
|
import { useTheme } from "next-themes";
|
|
|
|
// hooks
|
|
import useUserAuth from "hooks/use-user-auth";
|
|
// layouts
|
|
import { WorkspaceAuthorizationLayout } from "layouts/auth-layout";
|
|
import SettingsNavbar from "layouts/settings-navbar";
|
|
// components
|
|
import { CustomThemeSelector, ThemeSwitch } from "components/core";
|
|
// ui
|
|
import { Spinner } from "components/ui";
|
|
import { BreadcrumbItem, Breadcrumbs } from "components/breadcrumbs";
|
|
// types
|
|
import { ICustomTheme } from "types";
|
|
|
|
const ProfilePreferences = () => {
|
|
const { user: myProfile } = useUserAuth();
|
|
const { theme } = useTheme();
|
|
const [customThemeSelectorOptions, setCustomThemeSelectorOptions] = useState(false);
|
|
const [preLoadedData, setPreLoadedData] = useState<ICustomTheme | null>(null);
|
|
|
|
useEffect(() => {
|
|
if (theme === "custom") {
|
|
if (myProfile?.theme.palette)
|
|
setPreLoadedData({
|
|
background: myProfile.theme.background !== "" ? myProfile.theme.background : "#0d101b",
|
|
text: myProfile.theme.text !== "" ? myProfile.theme.text : "#c5c5c5",
|
|
primary: myProfile.theme.primary !== "" ? myProfile.theme.primary : "#3f76ff",
|
|
sidebarBackground:
|
|
myProfile.theme.sidebarBackground !== ""
|
|
? myProfile.theme.sidebarBackground
|
|
: "#0d101b",
|
|
sidebarText: myProfile.theme.sidebarText !== "" ? myProfile.theme.sidebarText : "#c5c5c5",
|
|
darkPalette: false,
|
|
palette:
|
|
myProfile.theme.palette !== ",,,,"
|
|
? myProfile.theme.palette
|
|
: "#0d101b,#c5c5c5,#3f76ff,#0d101b,#c5c5c5",
|
|
});
|
|
if (!customThemeSelectorOptions) setCustomThemeSelectorOptions(true);
|
|
}
|
|
}, [myProfile, theme, customThemeSelectorOptions]);
|
|
|
|
return (
|
|
<WorkspaceAuthorizationLayout
|
|
breadcrumbs={
|
|
<Breadcrumbs>
|
|
<BreadcrumbItem title="My Profile Preferences" />
|
|
</Breadcrumbs>
|
|
}
|
|
>
|
|
{myProfile ? (
|
|
<div className="p-8">
|
|
<div className="mb-8 space-y-6">
|
|
<div>
|
|
<h3 className="text-3xl font-semibold">Profile Settings</h3>
|
|
<p className="mt-1 text-custom-text-200">
|
|
This information will be visible to only you.
|
|
</p>
|
|
</div>
|
|
<SettingsNavbar profilePage />
|
|
</div>
|
|
<div className="space-y-8 sm:space-y-12">
|
|
<div className="grid grid-cols-12 gap-4 sm:gap-16">
|
|
<div className="col-span-12 sm:col-span-6">
|
|
<h4 className="text-lg font-semibold text-custom-text-100">Theme</h4>
|
|
<p className="text-sm text-custom-text-200">
|
|
Select or customize your interface color scheme.
|
|
</p>
|
|
</div>
|
|
<div className="col-span-12 sm:col-span-6">
|
|
<ThemeSwitch
|
|
user={myProfile}
|
|
setPreLoadedData={setPreLoadedData}
|
|
customThemeSelectorOptions={customThemeSelectorOptions}
|
|
setCustomThemeSelectorOptions={setCustomThemeSelectorOptions}
|
|
/>
|
|
</div>
|
|
</div>
|
|
{customThemeSelectorOptions && <CustomThemeSelector preLoadedData={preLoadedData} />}
|
|
</div>
|
|
</div>
|
|
) : (
|
|
<div className="grid h-full w-full place-items-center px-4 sm:px-0">
|
|
<Spinner />
|
|
</div>
|
|
)}
|
|
</WorkspaceAuthorizationLayout>
|
|
);
|
|
};
|
|
|
|
export default ProfilePreferences;
|