woocommerce/plugins/woocommerce-admin/client/inbox-panel/index.js

418 lines
9.5 KiB
JavaScript
Raw Normal View History

/**
* External dependencies
*/
import { __, _n } from '@wordpress/i18n';
import { useEffect, useState, useMemo } from '@wordpress/element';
import {
EmptyContent,
Section,
Badge,
EllipsisMenu,
} from '@woocommerce/components';
import { Card, CardHeader, Button, CardFooter } from '@wordpress/components';
import { NOTES_STORE_NAME, QUERY_DEFAULTS } from '@woocommerce/data';
import { useSelect, useDispatch } from '@wordpress/data';
import { recordEvent } from '@woocommerce/tracks';
import { CSSTransition, TransitionGroup } from 'react-transition-group';
import {
InboxNoteCard,
InboxNotePlaceholder,
Text,
} from '@woocommerce/experimental';
import moment from 'moment';
/**
* Internal dependencies
*/
import { ActivityCard } from '~/activity-panel/activity-card';
import { hasValidNotes, truncateRenderableHTML } from './utils';
import { getScreenName } from '../utils';
import DismissAllModal from './dismiss-all-modal';
import './index.scss';
const ADD_NOTES_AMOUNT = 10;
const DEFAULT_INBOX_QUERY = {
page: 1,
per_page: 5,
status: 'unactioned',
type: QUERY_DEFAULTS.noteTypes,
orderby: 'date',
order: 'desc',
_fields: [
'id',
'name',
'title',
'content',
'type',
'status',
'actions',
'date_created',
'date_created_gmt',
'layout',
'image',
'is_deleted',
'is_read',
'locale',
],
};
const supportedLocales = [ 'en_US', 'en_AU', 'en_CA', 'en_GB', 'en_ZA' ];
const WC_VERSION_61_RELEASE_DATE = moment(
'2022-01-11',
'YYYY-MM-DD'
).valueOf();
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
const renderEmptyCard = () => (
<ActivityCard
className="woocommerce-empty-activity-card"
title={ __( 'Your inbox is empty', 'woocommerce' ) }
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
icon={ false }
>
{ __(
'As things begin to happen in your store your inbox will start to fill up. ' +
"You'll see things like achievements, new feature announcements, extension recommendations and more!",
'woocommerce'
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
) }
</ActivityCard>
);
const onBodyLinkClick = ( note, innerLink ) => {
recordEvent( 'inbox_action_click', {
note_name: note.name,
note_title: note.title,
note_content_inner_link: innerLink,
} );
};
let hasFiredPanelViewTrack = false;
const renderNotes = ( {
hasNotes,
isBatchUpdating,
notes,
onDismiss,
onNoteActionClick,
onNoteVisible,
setShowDismissAllModal: onDismissAll,
showHeader = true,
loadMoreNotes,
allNotesFetched,
notesHaveResolved,
unreadNotesCount,
} ) => {
if ( isBatchUpdating ) {
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
return;
}
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
if ( ! hasNotes ) {
return renderEmptyCard();
}
if ( ! hasFiredPanelViewTrack ) {
recordEvent( 'inbox_panel_view', {
total: notes.length,
} );
hasFiredPanelViewTrack = true;
}
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
const notesArray = Object.keys( notes ).map( ( key ) => notes[ key ] );
return (
<Card size="large">
{ showHeader && (
<CardHeader size="medium">
<div className="woocommerce-inbox-card__header">
<Text size="20" lineHeight="28px" variant="title.small">
{ __( 'Inbox', 'woocommerce' ) }
</Text>
<Badge count={ unreadNotesCount } />
</div>
<EllipsisMenu
label={ __( 'Inbox Notes Options', 'woocommerce' ) }
renderContent={ ( { onToggle } ) => (
<div className="woocommerce-inbox-card__section-controls">
<Button
onClick={ () => {
onDismissAll( true );
onToggle();
} }
>
{ __( 'Dismiss all', 'woocommerce' ) }
</Button>
</div>
) }
/>
</CardHeader>
) }
<TransitionGroup role="menu">
{ notesArray.map( ( note ) => {
const { id: noteId, is_deleted: isDeleted } = note;
if ( isDeleted ) {
return null;
}
return (
<CSSTransition
key={ noteId }
timeout={ 500 }
classNames="woocommerce-inbox-message"
>
<InboxNoteCard
key={ noteId }
note={ note }
onDismiss={ onDismiss }
onNoteActionClick={ onNoteActionClick }
onBodyLinkClick={ onBodyLinkClick }
onNoteVisible={ onNoteVisible }
/>
</CSSTransition>
);
} ) }
</TransitionGroup>
{ allNotesFetched
? null
: ( () => {
if ( ! notesHaveResolved ) {
return (
<InboxNotePlaceholder className="banner message-is-unread" />
);
}
return (
<CardFooter
className="woocommerce-inbox-card__footer"
size="medium"
>
<Button
isPrimary={ true }
onClick={ () => {
loadMoreNotes();
} }
>
{ notesArray.length >
DEFAULT_INBOX_QUERY.per_page
? __( 'Show more', 'woocommerce' )
: __( 'Show older', 'woocommerce' ) }
</Button>
</CardFooter>
);
} )() }
</Card>
);
};
2018-10-12 19:20:48 +00:00
const InboxPanel = ( { showHeader = true } ) => {
const [ noteDisplayQty, setNoteDisplayQty ] = useState(
DEFAULT_INBOX_QUERY.per_page
);
const [ allNotesFetched, setAllNotesFetched ] = useState( false );
const [ allNotes, setAllNotes ] = useState( [] );
const [ viewedNotes, setViewedNotes ] = useState( {} );
const { createNotice } = useDispatch( 'core/notices' );
const {
removeNote,
updateNote,
triggerNoteAction,
invalidateResolutionForStoreSelector,
} = useDispatch( NOTES_STORE_NAME );
const screen = getScreenName();
const inboxQuery = useMemo( () => {
return {
...DEFAULT_INBOX_QUERY,
per_page: noteDisplayQty,
};
}, [ noteDisplayQty ] );
const {
isError,
notes,
notesHaveResolved,
isBatchUpdating,
unreadNotesCount,
} = useSelect( ( select ) => {
const {
getNotes,
getNotesError,
isNotesRequesting,
hasFinishedResolution,
} = select( NOTES_STORE_NAME );
return {
notes: getNotes( inboxQuery ),
unreadNotesCount: getNotes( {
...DEFAULT_INBOX_QUERY,
is_read: false,
per_page: -1,
} ).length,
isError: Boolean( getNotesError( 'getNotes', [ inboxQuery ] ) ),
isBatchUpdating: isNotesRequesting( 'batchUpdateNotes' ),
notesHaveResolved:
! isNotesRequesting( 'batchUpdateNotes' ) &&
hasFinishedResolution( 'getNotes', [ inboxQuery ] ),
};
} );
useEffect( () => {
if ( notesHaveResolved && notes.length < noteDisplayQty ) {
setAllNotesFetched( true );
}
if ( notesHaveResolved && notes.length ) {
setAllNotes(
notes.map( ( note ) => {
const noteDate = moment(
note.date_created_gmt,
'YYYY-MM-DD'
).valueOf();
if (
supportedLocales.includes( note.locale ) &&
noteDate >= WC_VERSION_61_RELEASE_DATE
) {
return {
...note,
content: truncateRenderableHTML(
note.content,
320
),
};
}
return note;
} )
);
}
}, [ notes, notesHaveResolved ] );
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
const [ showDismissAllModal, setShowDismissAllModal ] = useState( false );
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
const onNoteVisible = ( note ) => {
if ( ! viewedNotes[ note.id ] && ! note.is_read ) {
setViewedNotes( { ...viewedNotes, [ note.id ]: true } );
setTimeout( () => {
updateNote( note.id, {
is_read: true,
} );
}, 3000 );
}
recordEvent( 'inbox_note_view', {
note_content: note.content,
note_name: note.name,
note_title: note.title,
note_type: note.type,
screen,
} );
};
const onDismiss = async ( note ) => {
recordEvent( 'inbox_action_dismiss', {
note_name: note.name,
note_title: note.title,
note_name_dismiss_all: false,
note_name_dismiss_confirmation: true,
screen,
} );
const noteId = note.id;
try {
await removeNote( noteId );
invalidateResolutionForStoreSelector( 'getNotes' );
createNotice( 'success', __( 'Message dismissed', 'woocommerce' ), {
actions: [
{
label: __( 'Undo', 'woocommerce' ),
onClick: async () => {
await updateNote( noteId, {
is_deleted: 0,
} );
invalidateResolutionForStoreSelector( 'getNotes' );
},
},
],
} );
} catch ( e ) {
createNotice(
'error',
_n(
'Message could not be dismissed',
'Messages could not be dismissed',
1,
'woocommerce'
)
);
}
};
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
if ( isError ) {
const title = __(
'There was an error getting your inbox. Please try again.',
'woocommerce'
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
);
const actionLabel = __( 'Reload', 'woocommerce' );
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
const actionCallback = () => {
// @todo Add tracking for how often an error is displayed, and the reload action is clicked.
window.location.reload();
};
return (
<EmptyContent
title={ title }
actionLabel={ actionLabel }
actionURL={ null }
actionCallback={ actionCallback }
/>
);
}
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
if ( notesHaveResolved && ! allNotes.length ) {
return null;
}
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
return (
<>
{ showDismissAllModal && (
<DismissAllModal
onClose={ () => {
setShowDismissAllModal( false );
} }
/>
) }
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
<div className="woocommerce-homepage-notes-wrapper">
{ ! notesHaveResolved && ! allNotes.length && (
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
<Section>
<InboxNotePlaceholder className="banner message-is-unread" />
</Section>
) }
<Section>
{ Boolean( allNotes.length ) &&
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
renderNotes( {
loadMoreNotes: () => {
recordEvent( 'inbox_action_load_more', {
quantity_shown: allNotes.length,
} );
setNoteDisplayQty(
noteDisplayQty + ADD_NOTES_AMOUNT
);
},
hasNotes: hasValidNotes( allNotes ),
isBatchUpdating,
notes: allNotes,
onDismiss,
onNoteActionClick: ( note, action ) => {
triggerNoteAction( note.id, action.id );
},
onNoteVisible,
setShowDismissAllModal,
showHeader,
allNotesFetched,
notesHaveResolved,
unreadNotesCount,
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
} ) }
</Section>
</div>
</>
Migrate user store to wp.data (https://github.com/woocommerce/woocommerce-admin/pull/4505) * Initial user preferences custom hook (wc meta). * Organize dependencies. * Specify dependencies in useSelect() call. * Remove specifying preference keys. There's currently no performance benefit to be had. * Add HoC for hydrating current user data. * Add user prefs update method. * Export user prefs hook and HoC in data package. * Handle error condition when updating user preferences. * Use closure to get user ID for prefs update. * Refactor analytics dashboard to use new user hook. * Refactor ReportTable component to use new user hook. * Move prop access to top of function component. * Add todo for potential manual resolution logic. * Refactor DashboardCharts component to use new user preferences hook. * Move code out of functional component where possible. * Fix chart interval query property. * Refactor Leaderboards component to use new user preferences hook. * Move code out of functional component where possible. * Refactor Inbox panel to use user prefs hook. @todo - updating last read isn't working. * Use user prefs hook in StatsOverview component. * Export user preferences store name. * Use new store for unread inbox indicator. * Hydrate current user data higher up in the app. * Update "last read" timestamp in inbox panel. * Fix StatsOverview test. * Remove unused dispatch method from StorePerformance component. * Remove now defunct user methods from wc-api spec. * Add tests for isRequesting. * JSON decode WC meta on updated user object. * Test user prefs retrieval and save. * Remove todo comment. * Use user prefs hook in Jetpack install CTA on homepage.
2020-06-10 16:46:46 +00:00
);
};
export default InboxPanel;