Skip to content

Commit

Permalink
chore: hide fields feature flags
Browse files Browse the repository at this point in the history
  • Loading branch information
potts99 committed Nov 8, 2024
1 parent 5d9b8c9 commit 773da61
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 26 deletions.
5 changes: 0 additions & 5 deletions apps/client/@/shadcn/components/nav-main.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import { ChevronRight, type LucideIcon } from "lucide-react";
import { useState, useEffect } from "react";

import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/shadcn/ui/collapsible";
import {
SidebarGroup,
SidebarGroupLabel,
Expand Down
73 changes: 53 additions & 20 deletions apps/client/components/CreateTicketModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,37 @@ export default function CreateTicketModal({ keypress, setKeyPressDown }) {

useEffect(() => checkPress(), [keypress]);

const showKeyboardShortcuts =
localStorage.getItem("hide-keyboard-shortcuts") === "true";
const [hideKeyboardShortcuts, setHideKeyboardShortcuts] = useState(false);
const [hideName, setHideName] = useState(false);
const [hideEmail, setHideEmail] = useState(false);

useEffect(() => {
const loadFlags = () => {
const savedFlags = localStorage.getItem("featureFlags");
if (savedFlags) {
const flags = JSON.parse(savedFlags);
const hideShortcuts = flags.find(
(f: any) => f.name === "Hide Keyboard Shortcuts"
)?.enabled;

const hideName = flags.find(
(f: any) => f.name === "Hide Name in Create"
)?.enabled;

const hideEmail = flags.find(
(f: any) => f.name === "Hide Email in Create"
)?.enabled;

setHideKeyboardShortcuts(hideShortcuts || false);
setHideName(hideName || false);
setHideEmail(hideEmail || false);
}
};

loadFlags();
window.addEventListener("storage", loadFlags);
return () => window.removeEventListener("storage", loadFlags);
}, []);

return (
<>
Expand All @@ -162,7 +191,7 @@ export default function CreateTicketModal({ keypress, setKeyPressDown }) {
{state === "expanded" && (
<>
<span className="whitespace-nowrap">New Issue</span>
{showKeyboardShortcuts && (
{!hideKeyboardShortcuts && (
<div className="flex w-full justify-end float-right">
<span className="flex h-6 w-6 shrink-0 items-center bg-transparent border-none justify-center text-md font-medium">
c
Expand Down Expand Up @@ -225,26 +254,30 @@ export default function CreateTicketModal({ keypress, setKeyPressDown }) {
placeholder="Issue title"
maxLength={64}
onChange={(e) => setTitle(e.target.value)}
className="w-full pl-0 pr-0 text-md text-foreground bg-background border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
className="w-full pl-0 pr-0 pt-0 text-md text-foreground bg-background border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
/>

<div className="">
<input
type="text"
id="name"
placeholder={t("ticket_name_here")}
name="name"
onChange={(e) => setName(e.target.value)}
className=" w-full pl-0 pr-0text-foreground bg-background sm:text-sm border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
/>

<input
type="text"
name="email"
placeholder={t("ticket_email_here")}
onChange={(e) => setEmail(e.target.value)}
className=" w-full pl-0 pr-0 text-foreground bg-background sm:text-sm border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
/>
{!hideName && (
<input
type="text"
id="name"
placeholder={t("ticket_name_here")}
name="name"
onChange={(e) => setName(e.target.value)}
className=" w-full pl-0 pr-0text-foreground bg-background sm:text-sm border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
/>
)}

{!hideEmail && (
<input
type="text"
name="email"
placeholder={t("ticket_email_here")}
onChange={(e) => setEmail(e.target.value)}
className=" w-full pl-0 pr-0 text-foreground bg-background sm:text-sm border-none focus:outline-none focus:shadow-none focus:ring-0 focus:border-none"
/>
)}

<Editor setIssue={setIssue} />

Expand Down
23 changes: 22 additions & 1 deletion apps/client/pages/settings/flags.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,27 @@ interface FeatureFlag {
name: string;
enabled: boolean;
description: string;
flagKey: string;
}

const defaultFlags: FeatureFlag[] = [
{
name: "Hide Keyboard Shortcuts",
enabled: false,
description: "Hide keyboard shortcuts",
flagKey: "keyboard_shortcuts_hide", // Added flag key for this feature
},
{
name: "Hide Name in Create",
enabled: false,
description: "Hide name field in create a new issue",
flagKey: "name_hide", // Added flag key for this feature
},
{
name: "Hide Email in Create",
enabled: false,
description: "Hide email field in create a new issue",
flagKey: "email_hide", // Added flag key for this feature
},
];

Expand All @@ -23,7 +37,14 @@ export default function FeatureFlags() {
// Load flags from localStorage on component mount
const savedFlags = localStorage.getItem("featureFlags");
if (savedFlags) {
setFlags(JSON.parse(savedFlags));
const parsedFlags = JSON.parse(savedFlags);
// Merge saved flags with default flags, adding any new flags
const mergedFlags = defaultFlags.map(defaultFlag => {
const savedFlag = parsedFlags.find((f: FeatureFlag) => f.name === defaultFlag.name);
return savedFlag || defaultFlag;
});
setFlags(mergedFlags);
localStorage.setItem("featureFlags", JSON.stringify(mergedFlags));
} else {
setFlags(defaultFlags);
localStorage.setItem("featureFlags", JSON.stringify(defaultFlags));
Expand Down

0 comments on commit 773da61

Please sign in to comment.