Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 8 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@
"@typescript-eslint/ban-ts-comment": "off",
"camelcase": "off"
},
"overrides":
[{
"files": ["*.jsx"],
"rules": {
"@typescript-eslint/explicit-module-boundary-types": ["off"]
}
}],
"settings": {
"import/resolver": {
"alias": {
Expand All @@ -26,4 +33,4 @@
}
}
}
}
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"description": "Allows developers to enable / disable features based on flags.",
"scripts": {
"start": "wp-scripts start",
"build": "wp-scripts build"
"build": "wp-scripts build",
"lint:js": "wp-scripts lint-js"
},
"devDependencies": {
"@wordpress/eslint-plugin": "^12.0.1",
Expand Down
13 changes: 11 additions & 2 deletions src/components/DeleteModal.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
import { Modal, Button } from '@wordpress/components';
const DeleteModal = (props: any): JSX.Element => {
const { closeModal, item, handleDeleteFlag } = props;
import { Flag } from '../../types';
interface DeleteModalProps {
closeModal: () => void;
item: Flag;
handleDeleteFlag: (id: number) => void;
}
const DeleteModal = ({
closeModal,
item,
handleDeleteFlag,
}: DeleteModalProps): JSX.Element => {
return (
<Modal title={`Delete Feature Flag`} onRequestClose={closeModal}>
<p>
Expand Down
2 changes: 1 addition & 1 deletion src/components/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default function (): JSX.Element {
<FlexItem style={{ marginLeft: 140 }}>
<h4>Status</h4>
</FlexItem>
<FlexItem style={{ marginLeft: 60 }}>
<FlexItem style={{ marginLeft: 80 }}>
<h4>SDK Settings</h4>
</FlexItem>
<FlexItem style={{ marginLeft: 30 }}>
Expand Down
3 changes: 1 addition & 2 deletions src/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { getFlags } from '../utils';
import Header from './Header';

const Layout = (): JSX.Element => {
const [flags, setFlags] = useState<Flag[] | undefined>(undefined);
const [flags, setFlags] = useState<Flag[]>([]);
const [isLoading, setIsLoading] = useState<boolean>(true);

useEffect(() => {
Expand Down Expand Up @@ -55,7 +55,6 @@ const Layout = (): JSX.Element => {
<SubmitControls
setFlags={setFlags}
flags={flags}
isNew={false}
lastFlag={lastFlag}
disableSave={disableSave}
/>
Expand Down
9 changes: 7 additions & 2 deletions src/components/SdkModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@ import { Modal, Button } from '@wordpress/components';
import Snippet from './Snippet';
import { useMemo, useState, useEffect } from '@wordpress/element';
import { useCopyToClipboard } from '@wordpress/compose';
import { Flag } from '../../types';

const SdkModal = (props: any): JSX.Element => {
const { item, closeSdkModal } = props;
interface SdkModalProps {
item: Flag;
closeSdkModal: () => void;
}

const SdkModal = ({ item, closeSdkModal }: SdkModalProps): JSX.Element => {
const [hasJsCopied, setHasJsCopied] = useState(false);
const [hasPhpCopied, setHasPhpCopied] = useState(false);

Expand Down
3 changes: 1 addition & 2 deletions src/components/Snippet.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import SyntaxHighlighter from 'react-syntax-highlighter';
import { a11yDark } from 'react-syntax-highlighter/dist/esm/styles/hljs';

const Snippet = (props: any) => {
const { data } = props;
const Snippet = ({ data }: { data: string }): JSX.Element => {
return (
<SyntaxHighlighter language="javascript" style={a11yDark}>
{data}
Expand Down
54 changes: 31 additions & 23 deletions src/components/SubmitControls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,19 @@ import { useState } from '@wordpress/element';
import Notices from './Snackbar';
import { dispatch } from '@wordpress/data';

const SubmitControls = (props: any): JSX.Element => {
const { isNew, flags, setFlags, lastFlag, disableSave } = props;
interface SubmitControlsProps {
flags: Flag[];
setFlags: (flags: Flag[]) => void;
lastFlag: number;
disableSave: boolean;
}

const SubmitControls = ({
flags,
setFlags,
lastFlag,
disableSave,
}: SubmitControlsProps): JSX.Element => {
const [isSaving, setIsSaving] = useState<boolean>(false);

const handleNewFlag = () => {
Expand Down Expand Up @@ -54,27 +65,24 @@ const SubmitControls = (props: any): JSX.Element => {
Add Flag
</Button>
</FlexItem>
{!isNew && (
<>
<FlexItem>
<Button
variant="primary"
onClick={handleSave}
disabled={disableSave || isSaving}
>
{isSaving ? 'Saving' : 'Save'}
</Button>
</FlexItem>
<FlexItem>
<Button
variant="tertiary"
onClick={() => location.reload()}
>
Cancel
</Button>
</FlexItem>
</>
)}

<FlexItem>
<Button
variant="primary"
onClick={handleSave}
disabled={disableSave || isSaving}
>
{isSaving ? 'Saving' : 'Save'}
</Button>
</FlexItem>
<FlexItem>
<Button
variant="tertiary"
onClick={() => location.reload()}
>
Cancel
</Button>
</FlexItem>
</Flex>

<Notices />
Expand Down
7 changes: 4 additions & 3 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import apiFetch from '@wordpress/api-fetch';
import { Flag } from '../../types';
import { FEATURE_FLAG_NAMESPACE, FEATURE_FLAG_ROUTE } from '../constants';

export const getFlags = async (): Promise<any> => {
const result: any = await apiFetch({
export const getFlags = async (): Promise<Flag[]> => {
const result: Flag[] = await apiFetch({
method: 'GET',
path: `${FEATURE_FLAG_NAMESPACE}/${FEATURE_FLAG_ROUTE}`,
});
return result;
};

export const updateFlags = async (
flags: any
flags: Flag[]
): Promise<{ status: number; success: boolean } | Error> => {
const result: { status: number; success: boolean } | Error = await apiFetch(
{
Expand Down
5 changes: 0 additions & 5 deletions types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,3 @@ export interface Flag {
enabled: boolean;
preProdEnabled?: boolean;
}

export interface FlagProps {
env: string;
flags: Flag[];
}