Skip to content

Commit

Permalink
fix: use new associate tag
Browse files Browse the repository at this point in the history
  • Loading branch information
theBenForce committed Jan 8, 2023
1 parent ac74a03 commit 877a97d
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 13 deletions.
10 changes: 4 additions & 6 deletions src/component/pages/SelectBookDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { logEvent } from "firebase/analytics";
import { getValue } from "firebase/remote-config";
import React from 'react';
import { FirebaseConfigKeys } from '../../constants';
import { useBookDetailsSearch } from '../../hooks/useBookDetailsSearch';
import { useConfigFlag } from "../../hooks/useFeatureFlag";
import { useFirebase } from "../../hooks/useFirebase";
import { getBookQuery } from '../../utils/getBookQuery';
import { AmazonSearchResult } from "../../utils/parseAmazonSearchResults";
Expand All @@ -15,15 +14,14 @@ export interface BookDetailsSelectorProps {

export const BookDetailsSelector: React.FC<BookDetailsSelectorProps> = ({ books, setBookDetails }) => {
const [selectedBook, setSelectedBook] = React.useState<KindleBook>(books[0]);
const { remoteConfig, analytics } = useFirebase();
const { analytics } = useFirebase();
const [searchQuery, setSearchQuery] = React.useState("");
const { results: searchResults, search, isBusy: isSearching } = useBookDetailsSearch();

const amazonAssociateTag = React.useMemo(() => remoteConfig ? getValue(remoteConfig, FirebaseConfigKeys.AmazonAssociateTag).asString() : '', [remoteConfig]);
const amazonAssociateTag = useConfigFlag('amazonAssociateTag');

React.useEffect(() => {
onSearch(getBookQuery(selectedBook));

}, []);

React.useEffect(() => {
Expand Down Expand Up @@ -76,7 +74,7 @@ export const BookDetailsSelector: React.FC<BookDetailsSelectorProps> = ({ books,
<div className='px-2 flex flex-col w-full'>
<div className='text-lg'>{book.title}</div>
<div className='text-sm'>{book.author}</div>
<div className='text-sm'><a href={`https://amazon.com${book.productPath}?tag=${amazonAssociateTag}`} target="_blank">View Book</a></div>
<div className='text-sm'><a href={`https://amazon.com${book.productPath}?tag=${amazonAssociateTag}`} target="_blank" rel="noreferrer">View Book</a></div>
</div>
</div>)}
</div>
Expand Down
4 changes: 0 additions & 4 deletions src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
export enum FirebaseConfigKeys {
AmazonAssociateTag = "amazonAssociateTag"
};

export enum BookPageProperties {
SourceBookIds = "source-book-ids",
}
30 changes: 27 additions & 3 deletions src/hooks/useFeatureFlag.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,17 @@ const flags = {
enableDetailsSelector: new Rox.Flag(false),
};

const config = {
amazonAssociateTag: new Rox.RoxString('thebenforce0c-20'),
}

Rox.register('', flags);
Rox.register('config', config);

type FlagNames = keyof typeof flags;
type ConfigNames = keyof typeof config;

export const useFeatureFlag = (name: FlagNames) => {
const useCloudBees = () => {
const isDev = useIsDevelopment();
const logseq = useLogseq();
const [isSetup, setSetup] = React.useState(false);
Expand All @@ -31,12 +37,30 @@ export const useFeatureFlag = (name: FlagNames) => {
setSetup(false);
Rox.setup(environmentId, {}).then(() => setSetup(true));
}, [environmentId]);

return isSetup;
}

export const useFeatureFlag = (name: FlagNames) => {
const isSetup = useCloudBees();

const isEnabled = React.useMemo(() => {
if (!isSetup) return false;
if (!isSetup) return flags[name].defaultValue;

return flags[name].isEnabled();
return flags[name].isEnabled?.();
}, [isSetup, name]);

return isEnabled;
}

export const useConfigFlag = (name: ConfigNames) => {
const isSetup = useCloudBees();

const value = React.useMemo(() => {
if (!isSetup) return config[name].defaultValue;

return config[name].getValue();
}, [isSetup, name]);

return value;
}

0 comments on commit 877a97d

Please sign in to comment.