From e44f32bd6841aa9cdd8268eb3e9367a5041405d1 Mon Sep 17 00:00:00 2001 From: dank074 Date: Tue, 4 Jan 2022 02:20:52 -0600 Subject: [PATCH] add confirm to marketplace --- .../marketplace-item/MarketplaceItemView.tsx | 28 +++---------------- .../CatalogLayoutMarketplaceOwnItemsView.tsx | 9 ++++-- .../post-offer/MarketplacePostOfferView.tsx | 14 ++++++---- ...atalogLayoutMarketplacePublicItemsView.tsx | 28 ++++++++++++++++--- .../mod-tools/ModToolsMessageHandler.tsx | 20 ++++++------- .../ModToolsUserModActionView.tsx | 23 +++++++-------- 6 files changed, 64 insertions(+), 58 deletions(-) diff --git a/src/views/catalog/views/page/layout/marketplace/marketplace-item/MarketplaceItemView.tsx b/src/views/catalog/views/page/layout/marketplace/marketplace-item/MarketplaceItemView.tsx index cb8d03ec..db086b2a 100644 --- a/src/views/catalog/views/page/layout/marketplace/marketplace-item/MarketplaceItemView.tsx +++ b/src/views/catalog/views/page/layout/marketplace/marketplace-item/MarketplaceItemView.tsx @@ -1,11 +1,6 @@ -import { BuyMarketplaceOfferMessageComposer, CancelMarketplaceOfferMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback } from 'react'; import { GetRoomEngine, LocalizeText } from '../../../../../../../api'; -import { SendMessageHook } from '../../../../../../../hooks'; import { NitroCardGridItemView } from '../../../../../../../layout'; -import { NotificationAlertType } from '../../../../../../notification-center/common/NotificationAlertType'; -import { NotificationUtilities } from '../../../../../../notification-center/common/NotificationUtilities'; -import { GetCurrencyAmount } from '../../../../../../purse/common/CurrencyHelper'; import { MarketplaceOfferData } from '../common/MarketplaceOfferData'; import { MarketPlaceOfferState } from '../common/MarketplaceOfferState'; @@ -16,11 +11,12 @@ export interface MarketplaceItemViewProps { offerData: MarketplaceOfferData; type?: number; + onClick(offerData: MarketplaceOfferData): void; } export const MarketplaceItemView: FC = props => { - const { offerData = null, type = PUBLIC_OFFER } = props; + const { offerData = null, type = PUBLIC_OFFER, onClick = null } = props; const getImageUrlForOffer = useCallback( () => { @@ -76,22 +72,6 @@ export const MarketplaceItemView: FC = props => return LocalizeText('catalog.marketplace.offer.time_left', ['time'], [text] ); }, [offerData]); - const takeItemBack = useCallback(() => - { - SendMessageHook(new CancelMarketplaceOfferMessageComposer(offerData.offerId)); - }, [offerData.offerId]); - - const buyOffer = useCallback(() => - { - if(offerData.price > GetCurrencyAmount(-1)) - { - NotificationUtilities.simpleAlert(LocalizeText('catalog.alert.notenough.credits.description'), NotificationAlertType.DEFAULT, null, null, LocalizeText('catalog.alert.notenough.title')); - return; - } - - SendMessageHook(new BuyMarketplaceOfferMessageComposer(offerData.offerId)); - }, [offerData.offerId, offerData.price]); - return ( @@ -111,9 +91,9 @@ export const MarketplaceItemView: FC = props => }
- { (type === OWN_OFFER && offerData.status !== MarketPlaceOfferState.SOLD) && } + { (type === OWN_OFFER && offerData.status !== MarketPlaceOfferState.SOLD) && } { type === PUBLIC_OFFER && <> - + }
diff --git a/src/views/catalog/views/page/layout/marketplace/own-items/CatalogLayoutMarketplaceOwnItemsView.tsx b/src/views/catalog/views/page/layout/marketplace/own-items/CatalogLayoutMarketplaceOwnItemsView.tsx index 38f5509a..d76ae6f3 100644 --- a/src/views/catalog/views/page/layout/marketplace/own-items/CatalogLayoutMarketplaceOwnItemsView.tsx +++ b/src/views/catalog/views/page/layout/marketplace/own-items/CatalogLayoutMarketplaceOwnItemsView.tsx @@ -1,4 +1,4 @@ -import { GetMarketplaceOwnOffersMessageComposer, MarketplaceCancelOfferResultEvent, MarketplaceOwnOffersEvent, RedeemMarketplaceOfferCreditsMessageComposer } from '@nitrots/nitro-renderer'; +import { CancelMarketplaceOfferMessageComposer, GetMarketplaceOwnOffersMessageComposer, MarketplaceCancelOfferResultEvent, MarketplaceOwnOffersEvent, RedeemMarketplaceOfferCreditsMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback, useState } from 'react'; import { LocalizeText } from '../../../../../../../api'; import { BatchUpdates, CreateMessageHook, SendMessageHook, UseMountEffect } from '../../../../../../../hooks'; @@ -96,6 +96,11 @@ export const CatalogLayoutMarketplaceOwnItemsView: FC + { + SendMessageHook(new CancelMarketplaceOfferMessageComposer(offerData.offerId)); + }, []); + return ( <> { (creditsWaiting <= 0) && {LocalizeText('catalog.marketplace.redeem.no_sold_items')}} @@ -107,7 +112,7 @@ export const CatalogLayoutMarketplaceOwnItemsView: FC{LocalizeText('catalog.marketplace.items_found', ['count'], [offers.size.toString()])} { - Array.from(offers.values()).map( (entry, index) => ) + Array.from(offers.values()).map( (entry, index) => ) } diff --git a/src/views/catalog/views/page/layout/marketplace/post-offer/MarketplacePostOfferView.tsx b/src/views/catalog/views/page/layout/marketplace/post-offer/MarketplacePostOfferView.tsx index fdd5c22b..445cd5cb 100644 --- a/src/views/catalog/views/page/layout/marketplace/post-offer/MarketplacePostOfferView.tsx +++ b/src/views/catalog/views/page/layout/marketplace/post-offer/MarketplacePostOfferView.tsx @@ -5,6 +5,7 @@ import { CatalogPostMarketplaceOfferEvent } from '../../../../../../../events/ca import { SendMessageHook, useUiEvent } from '../../../../../../../hooks'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView, NitroLayoutFlex } from '../../../../../../../layout'; import { FurnitureItem } from '../../../../../../inventory/common/FurnitureItem'; +import { NotificationUtilities } from '../../../../../../notification-center/common/NotificationUtilities'; export const MarketplacePostOfferView : FC<{}> = props => { @@ -68,12 +69,15 @@ export const MarketplacePostOfferView : FC<{}> = props => const postItem = useCallback( () => { - if(isNaN(askingPrice) || askingPrice <= 0) return; + if(isNaN(askingPrice) || askingPrice <= 0 || !item) return; - SendMessageHook(new MakeOfferMessageComposer(askingPrice, item.isWallItem ? 2 : 1, item.id)); - - setItem(null); - }, [askingPrice, item]); + NotificationUtilities.confirm(LocalizeText('inventory.marketplace.confirm_offer.info', ['furniname', 'price'], [getFurniTitle(), askingPrice.toString()]), () => + { + SendMessageHook(new MakeOfferMessageComposer(askingPrice, item.isWallItem ? 2 : 1, item.id)); + setItem(null); + }, + () => { setItem(null)}, null, null, LocalizeText('inventory.marketplace.confirm_offer.title')); + }, [askingPrice, getFurniTitle, item]); return ( item && diff --git a/src/views/catalog/views/page/layout/marketplace/public-items/CatalogLayoutMarketplacePublicItemsView.tsx b/src/views/catalog/views/page/layout/marketplace/public-items/CatalogLayoutMarketplacePublicItemsView.tsx index 217970be..69af4473 100644 --- a/src/views/catalog/views/page/layout/marketplace/public-items/CatalogLayoutMarketplacePublicItemsView.tsx +++ b/src/views/catalog/views/page/layout/marketplace/public-items/CatalogLayoutMarketplacePublicItemsView.tsx @@ -1,10 +1,11 @@ -import { GetMarketplaceOffersMessageComposer, MarketplaceBuyOfferResultEvent, MarketPlaceOffersEvent } from '@nitrots/nitro-renderer'; +import { BuyMarketplaceOfferMessageComposer, GetMarketplaceOffersMessageComposer, MarketplaceBuyOfferResultEvent, MarketPlaceOffersEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback, useMemo, useState } from 'react'; import { LocalizeText } from '../../../../../../../api'; import { BatchUpdates, CreateMessageHook, SendMessageHook } from '../../../../../../../hooks'; import { NitroCardGridView } from '../../../../../../../layout'; import { NotificationAlertType } from '../../../../../../notification-center/common/NotificationAlertType'; import { NotificationUtilities } from '../../../../../../notification-center/common/NotificationUtilities'; +import { GetCurrencyAmount } from '../../../../../../purse/common/CurrencyHelper'; import { CatalogLayoutProps } from '../../CatalogLayout.types'; import { IMarketplaceSearchOptions } from '../common/IMarketplaceSearchOptions'; import { MarketplaceOfferData } from '../common/MarketplaceOfferData'; @@ -47,6 +48,21 @@ export const CatalogLayoutMarketplacePublicItemsView: FC + { + if(offerData.price > GetCurrencyAmount(-1)) + { + NotificationUtilities.simpleAlert(LocalizeText('catalog.alert.notenough.credits.description'), NotificationAlertType.DEFAULT, null, null, LocalizeText('catalog.alert.notenough.title')); + return; + } + const offerId = offerData.offerId; + NotificationUtilities.confirm(LocalizeText('catalog.marketplace.confirm_header'), () => + { + SendMessageHook(new BuyMarketplaceOfferMessageComposer(offerId)); + }, + null, null, null, LocalizeText('catalog.marketplace.confirm_title')); + },[]); + const onMarketPlaceOffersEvent = useCallback( (event: MarketPlaceOffersEvent) => { const parser = event.getParser(); @@ -109,8 +125,12 @@ export const CatalogLayoutMarketplacePublicItemsView: FC + { + SendMessageHook(new BuyMarketplaceOfferMessageComposer(parser.offerId)); + }, + null, null, null, LocalizeText('catalog.marketplace.confirm_higher_title')); break; case 4: NotificationUtilities.simpleAlert(LocalizeText('catalog.alert.notenough.credits.description'), NotificationAlertType.DEFAULT, null, null, LocalizeText('catalog.alert.notenough.title')); @@ -139,7 +159,7 @@ export const CatalogLayoutMarketplacePublicItemsView: FC{LocalizeText('catalog.marketplace.items_found', ['count'], [offers.size.toString()])} { - Array.from(offers.values()).map( (entry, index) => ) + Array.from(offers.values()).map( (entry, index) => ) } ); diff --git a/src/views/mod-tools/ModToolsMessageHandler.tsx b/src/views/mod-tools/ModToolsMessageHandler.tsx index 3357aef8..3863bdb7 100644 --- a/src/views/mod-tools/ModToolsMessageHandler.tsx +++ b/src/views/mod-tools/ModToolsMessageHandler.tsx @@ -1,13 +1,14 @@ import { CfhSanctionMessageEvent, CfhTopicsInitEvent, IssueDeletedMessageEvent, IssueInfoMessageEvent, IssuePickFailedMessageEvent, ModeratorActionResultMessageEvent, ModeratorInitMessageEvent, ModeratorToolPreferencesEvent, RoomEngineEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback } from 'react'; import { MODTOOLS_NEW_TICKET, PlaySound } from '../../api/utils/PlaySound'; -import { NotificationAlertEvent } from '../../events'; import { ModToolsEvent } from '../../events/mod-tools/ModToolsEvent'; import { ModToolsOpenRoomChatlogEvent } from '../../events/mod-tools/ModToolsOpenRoomChatlogEvent'; import { ModToolsOpenRoomInfoEvent } from '../../events/mod-tools/ModToolsOpenRoomInfoEvent'; import { ModToolsOpenUserChatlogEvent } from '../../events/mod-tools/ModToolsOpenUserChatlogEvent'; import { ModToolsOpenUserInfoEvent } from '../../events/mod-tools/ModToolsOpenUserInfoEvent'; -import { CreateMessageHook, dispatchUiEvent, useRoomEngineEvent, useUiEvent } from '../../hooks'; +import { CreateMessageHook, useRoomEngineEvent, useUiEvent } from '../../hooks'; +import { NotificationAlertType } from '../notification-center/common/NotificationAlertType'; +import { NotificationUtilities } from '../notification-center/common/NotificationUtilities'; import { SetCfhCategories } from './common/GetCFHCategories'; import { useModToolsContext } from './context/ModToolsContext'; import { ModToolsActions } from './reducers/ModToolsReducer'; @@ -38,8 +39,7 @@ export const ModToolsMessageHandler: FC<{}> = props => tickets: data.issues } }); - - console.log(parser); + }, [dispatchModToolsState]); const onIssueInfoMessageEvent = useCallback((event: IssueInfoMessageEvent) => @@ -68,7 +68,6 @@ export const ModToolsMessageHandler: FC<{}> = props => } }); - console.log(parser); }, [dispatchModToolsState, tickets]); const onModeratorToolPreferencesEvent = useCallback((event: ModeratorToolPreferencesEvent) => @@ -77,7 +76,6 @@ export const ModToolsMessageHandler: FC<{}> = props => if(!parser) return; - console.log(parser); }, []); const onIssuePickFailedMessageEvent = useCallback((event: IssuePickFailedMessageEvent) => @@ -86,8 +84,7 @@ export const ModToolsMessageHandler: FC<{}> = props => if(!parser) return; - // todo: let user know it failed - dispatchUiEvent(new NotificationAlertEvent(['Failed to pick issue'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('Failed to pick issue', NotificationAlertType.DEFAULT, null, null, 'Error') }, []); const onIssueDeletedMessageEvent = useCallback((event: IssueDeletedMessageEvent) => @@ -119,11 +116,11 @@ export const ModToolsMessageHandler: FC<{}> = props => if(parser.success) { - dispatchUiEvent(new NotificationAlertEvent(['Moderation action was successfull'], null, null, null, 'Success', null)); + NotificationUtilities.simpleAlert('Moderation action was successfull', NotificationAlertType.MODERATION, null, null, 'Success'); } else { - dispatchUiEvent(new NotificationAlertEvent(['There was a problem applying that moderation action'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('There was a problem applying tht moderation action', NotificationAlertType.MODERATION, null, null, 'Error'); } }, []); @@ -144,7 +141,6 @@ export const ModToolsMessageHandler: FC<{}> = props => SetCfhCategories(categories); - console.log(parser); }, [dispatchModToolsState]); const onCfhSanctionMessageEvent = useCallback((event: CfhSanctionMessageEvent) => @@ -153,7 +149,7 @@ export const ModToolsMessageHandler: FC<{}> = props => if(!parser) return; - console.log(parser); + // todo: update sanction data }, []); CreateMessageHook(ModeratorInitMessageEvent, onModeratorInitMessageEvent); diff --git a/src/views/mod-tools/views/user/user-mod-action/ModToolsUserModActionView.tsx b/src/views/mod-tools/views/user/user-mod-action/ModToolsUserModActionView.tsx index 09454bdc..88bcbac1 100644 --- a/src/views/mod-tools/views/user/user-mod-action/ModToolsUserModActionView.tsx +++ b/src/views/mod-tools/views/user/user-mod-action/ModToolsUserModActionView.tsx @@ -1,9 +1,10 @@ import { CallForHelpTopicData, DefaultSanctionMessageComposer, ModAlertMessageComposer, ModBanMessageComposer, ModKickMessageComposer, ModMessageMessageComposer, ModMuteMessageComposer, ModTradingLockMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback, useMemo, useState } from 'react'; import { LocalizeText } from '../../../../../api'; -import { NotificationAlertEvent } from '../../../../../events'; -import { dispatchUiEvent, SendMessageHook } from '../../../../../hooks'; +import { SendMessageHook } from '../../../../../hooks'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../../layout'; +import { NotificationAlertType } from '../../../../notification-center/common/NotificationAlertType'; +import { NotificationUtilities } from '../../../../notification-center/common/NotificationUtilities'; import { useModToolsContext } from '../../../context/ModToolsContext'; import { ModActionDefinition } from '../../../utils/ModActionDefinition'; import { ModToolsUserModActionViewProps } from './ModToolsUserModActionView.types'; @@ -59,13 +60,13 @@ export const ModToolsUserModActionView: FC = pro { if( (selectedTopic === -1) || (selectedAction === -1) ) { - dispatchUiEvent(new NotificationAlertEvent(['You must select a CFH topic and Sanction'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You must select a CFH topic and Sanction', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } if(!settings || !settings.cfhPermission) { - dispatchUiEvent(new NotificationAlertEvent(['You do not have permission to do this'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You do not have permission to do this', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } @@ -74,13 +75,13 @@ export const ModToolsUserModActionView: FC = pro if(!category) { - dispatchUiEvent(new NotificationAlertEvent(['You must select a CFH topic'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You must select a CFH topic', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } if(!sanction) { - dispatchUiEvent(new NotificationAlertEvent(['You must select a sanction'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You must select a sanction', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } @@ -92,13 +93,13 @@ export const ModToolsUserModActionView: FC = pro if(!settings.alertPermission) { - dispatchUiEvent(new NotificationAlertEvent(['You have insufficient permissions.'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You have insufficient permissions', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } if(message.trim().length === 0) { - dispatchUiEvent(new NotificationAlertEvent(['Please write a message to user.'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('Please write a message to user', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } @@ -113,7 +114,7 @@ export const ModToolsUserModActionView: FC = pro if(!settings.banPermission) { - dispatchUiEvent(new NotificationAlertEvent(['You have insufficient permissions.'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You have insufficient permissions', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } @@ -125,7 +126,7 @@ export const ModToolsUserModActionView: FC = pro if(!settings.kickPermission) { - dispatchUiEvent(new NotificationAlertEvent(['You have insufficient permissions.'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('You have insufficient permissions', NotificationAlertType.DEFAULT, null, null, 'Error'); return; } @@ -144,7 +145,7 @@ export const ModToolsUserModActionView: FC = pro if(message.trim().length === 0) { - dispatchUiEvent(new NotificationAlertEvent(['Please write a message to user.'], null, null, null, 'Error', null)); + NotificationUtilities.simpleAlert('Please write a message to user', NotificationAlertType.DEFAULT, null, null, 'Error'); return; }