Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
6765ea3
feat: Add save template modal
d-beezee Jul 11, 2025
c7f8fdc
feat: Add POST endpoint for workspace templates and integrate in Save…
d-beezee Jul 15, 2025
df4bc59
feat: Add submission action
d-beezee Jul 15, 2025
04f4a16
refactor: Simplify FormModal mutation hook by removing unused parameters
d-beezee Jul 15, 2025
e5ad7a7
fix: Reset on navigate
d-beezee Jul 15, 2025
2ee1fa5
rework: Split into components and hooks
d-beezee Jul 15, 2025
70acdb2
feat: Add pricing box
d-beezee Jul 15, 2025
229f48a
fix: Correct userslice for new api schema
d-beezee Jul 15, 2025
8409ad9
fix: Correct typography on recap card
d-beezee Jul 15, 2025
6a9ce71
chore: Change quote wrapper background color
d-beezee Jul 15, 2025
cf5fac0
rework: Move save template modal outside controls
d-beezee Jul 15, 2025
efe36a8
feat: Add save template card
d-beezee Jul 15, 2025
78445a5
feat: Add list of created templates from plan
d-beezee Jul 15, 2025
b151d76
fix: Update modal header markup and adjust typography colors
d-beezee Jul 16, 2025
8b7f868
feat: Add support for displaying additional saved templates in SaveTe…
d-beezee Jul 16, 2025
2dce409
fix: Adjust alignment of image items in SaveTemplateCard
d-beezee Jul 16, 2025
fe549f7
chore: Update fixtures
d-beezee Jul 16, 2025
7ff8363
test: Add data-qa attributes for improved testability in SaveAsTempla…
d-beezee Jul 16, 2025
8554bb0
fix: Adjust text alignment and structure in SuccessStep component
d-beezee Jul 16, 2025
3f9ca3f
rework: Remove useless styled
d-beezee Jul 16, 2025
4e58584
fix: Ensure unwrap is called on savePlanAsTemplate response
d-beezee Jul 16, 2025
6af620f
feat: Refactor Plan controls by adding new button components and upda…
d-beezee Jul 16, 2025
4132e1c
test: Update tests for new features
d-beezee Jul 16, 2025
28b0e11
style(table): add overflowWrap to GroupedTable for better text handling
Kariamos Jul 16, 2025
84c52e6
Merge pull request #1381 from AppQuality/UN-1581
d-beezee Jul 16, 2025
8754bb7
Merge pull request #1382 from AppQuality/UN-1584
d-beezee Jul 16, 2025
d166e7d
Merge pull request #1383 from AppQuality/refactor-controls
d-beezee Jul 17, 2025
81deb03
feat(profile): add Profile page with translation and layout integration
sinatragianpaolo Jul 7, 2025
6aa1048
feat(profile): update profile modal with navigation and add translati…
sinatragianpaolo Jul 7, 2025
f211188
feat(sidebar): update user icon and active state for profile navigation
sinatragianpaolo Jul 8, 2025
e77f1f3
fix(sidebar): update user active icon import to use user-active.svg
sinatragianpaolo Jul 8, 2025
48979df
feat(profile): add Profile page with header and icons for user and key
sinatragianpaolo Jul 8, 2025
fec5fcb
feat(profile): implement ProfileContext and update Profile component …
sinatragianpaolo Jul 8, 2025
3d49b63
chore: Do not use error boundary on development mode
d-beezee Jul 8, 2025
8b8f392
chore: Remove typo on filename
d-beezee Jul 8, 2025
0f80470
refactor: Split formik logic in multiple files
d-beezee Jul 8, 2025
46b9cea
feat(profile): update translation files and enhance Profile form with…
sinatragianpaolo Jul 8, 2025
9c0b3de
feat(api): add first_name and last_name fields to User type and updat…
sinatragianpaolo Jul 8, 2025
563b133
feat(profile): enhance user profile form with role selection and emai…
sinatragianpaolo Jul 8, 2025
a2b27f0
feat(profile): add password confirmation fields and requirements to p…
sinatragianpaolo Jul 9, 2025
806038b
feat(api): add patch endpoint for updating user data and response types
sinatragianpaolo Jul 9, 2025
a787ee9
feat(profile): refactor profile form and add user role handling with …
cannarocks Jul 9, 2025
79a11a3
feat(profile): add validation messages for required fields in profile…
cannarocks Jul 9, 2025
ff62443
feat(profile): implement PasswordAccordion component for password man…
sinatragianpaolo Jul 9, 2025
424d44c
refactor
sinatragianpaolo Jul 9, 2025
0621c20
feat(profile): remove email field from ProfileFormValues and FormProf…
sinatragianpaolo Jul 10, 2025
a93d7cd
feat(profile): add email field to ProfileFormValues and FormProfile c…
sinatragianpaolo Jul 10, 2025
466c5fe
feat(profile): add password validation messages and update toast noti…
sinatragianpaolo Jul 10, 2025
078f6ea
feat(profile): update profile form validation messages and improve pa…
sinatragianpaolo Jul 10, 2025
69246e3
feat(profile): refactor profile components to improve structure and a…
cannarocks Jul 10, 2025
3a734a3
fix(profile): update label color in PasswordAccordion for better visi…
cannarocks Jul 10, 2025
cb04752
feat(navigation): close profile modal when navigating to profile
cannarocks Jul 10, 2025
3809cfd
fix(profile): adjust icon size and color in PasswordAccordion and Pro…
sinatragianpaolo Jul 10, 2025
58a15ad
fix(profile): update email label in user card to specify 'Work email'
sinatragianpaolo Jul 10, 2025
1e32ce9
refactor(profile): set correct spacing on ProfileCard and removing un…
sinatragianpaolo Jul 10, 2025
5a086a7
fix(profile): remove console logs from PasswordAccordion and comments
sinatragianpaolo Jul 10, 2025
f8d810a
fix(profile): update error notifications for password updates and imp…
sinatragianpaolo Jul 10, 2025
ee39e94
fix(profile): add StyledFooter to PasswordAccordion and improve layou…
sinatragianpaolo Jul 11, 2025
7f3a15a
fix(profile): update anchor IDs and add data attributes for accessibi…
sinatragianpaolo Jul 11, 2025
6cdd8a5
refactor(profile): remove unused imports and streamline form handling…
sinatragianpaolo Jul 11, 2025
3b1be40
fix(user): add missing first_name and last_name fields to initial use…
sinatragianpaolo Jul 11, 2025
7238e46
fix(profile): ensure password confirmation check accounts for empty v…
sinatragianpaolo Jul 11, 2025
0943fb1
fix(profile): add success and error messages for profile updates in t…
sinatragianpaolo Jul 11, 2025
1a8eeb1
fix(dependencies): update @appquality/unguess-design-system to versio…
sinatragianpaolo Jul 11, 2025
a79ce5a
fix(dependencies): update @appquality/unguess-design-system to versio…
cannarocks Jul 11, 2025
b86439f
feat(profile): implement Loader component for loading states in profi…
cannarocks Jul 11, 2025
c9c8ee5
fix(profile): update profile page title and header for consistency
sinatragianpaolo Jul 11, 2025
fbd9c02
feat(profile): add "Forgot password?" link to PasswordAccordion compo…
sinatragianpaolo Jul 11, 2025
c634a06
fix(profile): adjust column layout for name and surname fields in Pro…
sinatragianpaolo Jul 11, 2025
af85fda
feat(profile): implement PasswordAccordion component with current, ne…
sinatragianpaolo Jul 11, 2025
2fa94a4
refactor(profile): simplify layout and improve structure in PasswordA…
sinatragianpaolo Jul 11, 2025
6a139fc
fix(translations): simplify error message for password mismatch
sinatragianpaolo Jul 14, 2025
eaea5c5
feat(profile): enhance password fields with visibility toggle in Conf…
sinatragianpaolo Jul 14, 2025
29ba35a
fix(profile): adjust margin styles in NewPassword and ProfileCard com…
sinatragianpaolo Jul 14, 2025
8fdea05
fix(password): update input type initialization to 'password' in Conf…
sinatragianpaolo Jul 14, 2025
f4c2776
feat(signup): add placeholders for password fields and role selection…
sinatragianpaolo Jul 14, 2025
3b3558e
fix(password): swap visibility icons for password field toggle in Step1
sinatragianpaolo Jul 14, 2025
3a38f67
fix(NewPassword): remove unused Input import
sinatragianpaolo Jul 14, 2025
35b9937
feat(profile): add "Forgot password?" link and update password field …
iacopolea Jul 15, 2025
7191f80
feat(profile): add save changes button and update password form layout
iacopolea Jul 15, 2025
28272b8
fix(common): remove button width styling from StyledFooter
iacopolea Jul 15, 2025
0164198
fix(profile): enhance password validation and update layout for passw…
iacopolea Jul 15, 2025
0fd78c8
feat(profile): implement profile page structure and add password sett…
iacopolea Jul 15, 2025
d262dbe
test(profile): enhance profile page tests and add password settings v…
sinatragianpaolo Jul 16, 2025
314255e
feat(profile): implement profile update functionality and enable subm…
sinatragianpaolo Jul 16, 2025
9fe6098
feat(profile): enhance profile page tests and add password update fun…
sinatragianpaolo Jul 16, 2025
efe5095
feat(analytics): add segment plugin for enhanced analytics tracking
sinatragianpaolo Jul 17, 2025
7f22321
refactor(sidebar): remove commented-out profile navigation item
sinatragianpaolo Jul 17, 2025
92c00c2
refactor(profile): clean up import statements in ProfileCard component
sinatragianpaolo Jul 17, 2025
ddee85d
refactor(confirm-password): clean up import statements in ConfirmPass…
sinatragianpaolo Jul 17, 2025
7d0f56c
refactor(password-fields): update password visibility toggle titles i…
sinatragianpaolo Jul 17, 2025
1697628
feat(Step2): add mockGetRoles method for API role routing in tests
sinatragianpaolo Jul 17, 2025
196a274
refactor(sidebar): remove unused UserIcon imports in AppSidebar compo…
sinatragianpaolo Jul 17, 2025
f18b15a
refactor(password-requirements): consolidate password validation logi…
iacopolea Jul 17, 2025
f7582f9
fix(translation): add missing confirmation password error message in …
iacopolea Jul 17, 2025
9c7b7c9
refactor(schema): remove unused first_name and last_name fields from …
iacopolea Jul 17, 2025
4699b48
fix(tests): add missing mockWorkspacesList call in profile page tests
iacopolea Jul 17, 2025
8a3a49a
Merge pull request #1379 from AppQuality/UN-1539
sinatragianpaolo Jul 17, 2025
265f32c
feat(tooltip): add tooltip for delete action in IconButtonMenu
d-beezee Jul 18, 2025
1cfa609
Merge pull request #1385 from AppQuality/add-tooltip-to-delete-plan
d-beezee Jul 18, 2025
02046a1
feat(campaign): add "Go to Activity Setup" button in campaign menu
d-beezee Jul 18, 2025
a060956
feat(profile): add Profile page with translation and layout integration
sinatragianpaolo Jul 7, 2025
9a9672b
refactor(track): replace useAppSelector with useGetUsersMeQuery for u…
Kariamos Jul 10, 2025
4593db2
refactor(track): add error handling to user data fetching
Kariamos Jul 10, 2025
b0578a4
refactor(userItem): replace useAppSelector with useGetUsersMeQuery fo…
Kariamos Jul 10, 2025
2d69081
refactor(profileAvatar): replace useAppSelector with useGetUsersMeQue…
Kariamos Jul 10, 2025
b2cc073
refactor(navigationProfileModal): replace useAppSelector with useGetU…
Kariamos Jul 10, 2025
fcdd58a
refactor(Logged): replace useAppSelector with useGetUsersMeQuery for …
Kariamos Jul 10, 2025
d2aaa9c
refactor(Chat): replace useAppSelector with useGetUsersMeQuery for us…
Kariamos Jul 10, 2025
04d46e2
refactor(userItem): replace useAppSelector with useGetUsersMeQuery fo…
Kariamos Jul 10, 2025
a3b87d5
refactor(getMentionableUsers): replace useAppSelector with useGetUser…
Kariamos Jul 10, 2025
2b1e6c1
refactor(useCampaign): replace useAppSelector with useGetUsersMeQuery…
Kariamos Jul 10, 2025
ea32f79
refactor(DashboardHeaderContent): replace useAppSelector with useGetU…
Kariamos Jul 10, 2025
446d602
refactor(Dashboard): replace useAppSelector with useGetUsersMeQuery f…
Kariamos Jul 10, 2025
1f8dd5c
refactor(ProjectPageHeader): replace useAppSelector with useGetUsersM…
Kariamos Jul 10, 2025
3986120
refactor(InsightsPage): replace useAppSelector with useGetUsersMeQuer…
Kariamos Jul 10, 2025
ceb243e
refactor(JoinPage): replace useAppSelector with useGetUsersMeQuery fo…
Kariamos Jul 10, 2025
35abba0
refactor(LoginPage): replace useAppSelector with useGetUsersMeQuery f…
Kariamos Jul 10, 2025
0c9a10c
refactor(Template): replace useAppSelector with useGetUsersMeQuery fo…
Kariamos Jul 10, 2025
3551560
refactor(Templates): replace useAppSelector with useGetUsersMeQuery f…
Kariamos Jul 10, 2025
3215d34
refactor(VideoPage): replace useAppSelector with useGetUsersMeQuery f…
Kariamos Jul 10, 2025
dcc035a
refactor(VideosPage): replace useAppSelector with useGetUsersMeQuery …
Kariamos Jul 10, 2025
72cf0fc
refactor(Track): simplify user data loading check by changind error w…
Kariamos Jul 11, 2025
1b91249
refactor(UserItem): replace error handling with success check for use…
Kariamos Jul 11, 2025
d04428d
refactor(JoinPage): remove unused useAppSelector import
Kariamos Jul 11, 2025
22eb58b
refactor(ProfileAvatar): enhance user data loading check with isError…
Kariamos Jul 11, 2025
4329260
refactor(UserItem): improve user data loading check by consolidating …
Kariamos Jul 11, 2025
dfa2708
refactor(useGTMevent): streamline user data retrieval by integrating …
Kariamos Jul 11, 2025
6e6a5fa
refactor(useFeatureFlag): integrate user data from useGetUsersMeQuery…
Kariamos Jul 11, 2025
36f2b69
refactor(userSlice): remove unused userSlice file and related code
Kariamos Jul 11, 2025
3e1de79
refactor(store): remove unused user reducer from store configuration
Kariamos Jul 11, 2025
33c4c4f
refactor(Chat): update user data handling to improve error management…
Kariamos Jul 11, 2025
558b523
refactor(useGTMevent): moved hook inside
Kariamos Jul 11, 2025
9448c1a
refactor(useFeatureFlag): removed useless useSelector as we are not u…
Kariamos Jul 15, 2025
64ec8f5
refactor(useGTMevent): remove Redux selector and simplify user data h…
Kariamos Jul 15, 2025
c12a67c
refactor(JoinPage): improve user data handling and error management i…
Kariamos Jul 15, 2025
7767423
refactor(JoinPage): enhance user data handling and error management i…
cannarocks Jul 16, 2025
3b62a32
refactor(useGTMevent): add conditional fetching for user data and act…
Kariamos Jul 16, 2025
9faa525
refactor(useActiveWorkspace): add skip option to useGetWorkspacesQuer…
Kariamos Jul 16, 2025
04f39f9
refactor(JoinPage): simplify shouldSkipQuery logic by removing unnece…
Kariamos Jul 17, 2025
d9eb779
refactor(Step1): improve element selectors for better readability and…
Kariamos Jul 17, 2025
cf59e16
fix(schema): removed duplicates from schema
Kariamos Jul 17, 2025
7aaee6b
refactor(api): removed duplicates type definitions in index.ts
Kariamos Jul 17, 2025
a7333cf
refactor(JoinPage): removing unused variables
Kariamos Jul 17, 2025
c76443a
fix(pagination): ensure pagination buttons reflect correct enabled/di…
sinatragianpaolo Jul 17, 2025
5f16fd6
fix(pagination): update pagination assertions to use not.toBeDisabled…
sinatragianpaolo Jul 17, 2025
77b8b76
fix(playwright): set timeout for test execution
sinatragianpaolo Jul 17, 2025
13e3d70
fix(Profile): increase timeout for password accordion header click
sinatragianpaolo Jul 17, 2025
5c5efd6
fix(Profile): increase timeout for password accordion header click
sinatragianpaolo Jul 17, 2025
270c0f2
fix(Profile): remove timeout from password accordion header click
sinatragianpaolo Jul 17, 2025
d3af294
fix(playwright): remove default timeout setting from configuration
sinatragianpaolo Jul 17, 2025
63a26d5
fix(Profile): add mockPreferences call in beforeEach setup
sinatragianpaolo Jul 17, 2025
bcbeb24
fix(Profile): remove mockPreferences call from beforeEach setup
sinatragianpaolo Jul 17, 2025
d5d363c
fix(Templates): update mockGetTemplates to use route.fallback for bet…
sinatragianpaolo Jul 17, 2025
d6be6c6
fix(schema): add first_name and last_name fields to User interface
sinatragianpaolo Jul 18, 2025
0641da4
fix(sidebar): remove Profile section from AppSidebar component
sinatragianpaolo Jul 18, 2025
cb09607
fix(translations): remove Profile section labels from English and Ita…
sinatragianpaolo Jul 18, 2025
682424e
fix(Chat): include userDataLoading check in ChatBox component rendering
sinatragianpaolo Jul 18, 2025
b15ad7c
fix(Chat): simplify comment creator check in ChatBox component
sinatragianpaolo Jul 18, 2025
569c944
Merge pull request #1386 from AppQuality/UN-1606
d-beezee Jul 18, 2025
38b72f8
feat(tooltip): increase tooltip size
d-beezee Jul 18, 2025
dc0b703
fix(ProfileAvatar): simplify user loading state handling in ProfileAv…
sinatragianpaolo Jul 18, 2025
199a654
fix(LoginPage): simplify navigation condition in useEffect
iacopolea Jul 18, 2025
6a3ffbe
fix(VideoPage): simplify user data check in useEffect for navigation
Kariamos Jul 18, 2025
6bd0ee6
fix(VideosPage): simplify user data check in useEffect for navigation
Kariamos Jul 18, 2025
17b263b
fix(SaveTemplate): remove unused Templates import to streamline test …
iacopolea Jul 18, 2025
9ca382b
fix(Step1): revert fillValidPassword method by reducing redundant ele…
Kariamos Jul 18, 2025
9d59273
Merge pull request #1376 from AppQuality/UN-1560-remove-user-slice
Kariamos Jul 18, 2025
75d4577
feat(FormPassword): add destroyOtherSessions call on password update
sinatragianpaolo Jul 18, 2025
ceb480d
feat(Profile): enhance password update to destroy other sessions
sinatragianpaolo Jul 18, 2025
fd6e49d
Merge pull request #1387 from AppQuality/destroy-sessions-on-change-p…
d-beezee Jul 18, 2025
e8e56bd
chore: update @appquality/unguess-design-system to version 4.0.46 in …
Kariamos Jul 15, 2025
804ecef
Merge pull request #1380 from AppQuality/update-des-sys-v
Kariamos Jul 18, 2025
f971220
feat(Step2): enhance role selection with label and placeholder
Kariamos Jul 8, 2025
a917c1a
fix(deps): downgrade @appquality/unguess-design-system to version 4.0.44
cannarocks Jul 17, 2025
b73050e
fix(Step2): remove duplicate placeholder prop from role selection
Kariamos Jul 18, 2025
7b8da8b
fix(deps): update @appquality/unguess-design-system to version 4.0.46
Kariamos Jul 18, 2025
9430ace
fix: remove unused userData variable from LoginPage, VideoPage, and V…
Kariamos Jul 18, 2025
1f40484
feat(planModules): remove errors and validation functions for removed…
iacopolea Jul 18, 2025
4a16cbc
Merge pull request #1384 from AppQuality/UN-1579-long-words-overlapping
cannarocks Jul 21, 2025
3aa4bbc
Merge pull request #1375 from AppQuality/UN-1550-role-placeholder-joi…
cannarocks Jul 21, 2025
af63f4d
wip(tasks): init draggable task list using @atlaskit/pragmatic-drag-a…
iacopolea Jul 4, 2025
f97f003
feat: basic task drag-and-drop functionality
iacopolea Jul 4, 2025
b00a3fa
refactor: streamline task management by using setOutput directly from…
iacopolea Jul 7, 2025
291cef4
feat: implement getPlansByPid endpoint with task ID generation
iacopolea Jul 7, 2025
47fa880
feat: add animation support for task items and improve drag-and-drop …
iacopolea Jul 8, 2025
72ecc31
refactor: reorganize imports and clean up unused code in TaskItemNav …
iacopolea Jul 8, 2025
eb16d9d
refactor: simplify rendering of DropIndicator in TaskItemNav component
iacopolea Jul 8, 2025
cf6e7db
feat: enhance getPlansByPid endpoint to generate unique IDs for tasks
iacopolea Jul 10, 2025
4474007
feat: implement unique task IDs and enhance task management functiona…
iacopolea Jul 10, 2025
4ef8ced
refactor: update layout styles in TaskItemNav and NavItem components …
iacopolea Jul 11, 2025
87a11d6
refactor: streamline TaskItemNav and NavItem components for improved …
iacopolea Jul 11, 2025
70161c8
fix: add layout prop to motion.li for improved animation performance
iacopolea Jul 11, 2025
efbb8fc
refactor: improve layout and styling in TaskItem, TasksList, DragPrev…
iacopolea Jul 11, 2025
bde9c6e
feat: enhance task management with unique IDs and improve task identi…
iacopolea Jul 11, 2025
0eaa1b5
fix: update error handling in TaskItem to use task ID and improve Tas…
iacopolea Jul 11, 2025
4a60798
fix: reorder import statements in TaskItemNav for improved clarity
iacopolea Jul 11, 2025
5fc5be2
fix: ensure unique task IDs are assigned in task mapping and update t…
iacopolea Jul 14, 2025
1418eb6
test: add test for task reordering functionality in tasks module
iacopolea Jul 14, 2025
fb978b0
Merge pull request #1389 from AppQuality/UN-1607
d-beezee Jul 21, 2025
57498cd
Merge pull request #1378 from AppQuality/UN-1542-dnd
d-beezee Jul 21, 2025
341a108
fix: update style properties for improved text wrapping in GroupedTable
Kariamos Jul 21, 2025
69e32e2
fix: ensure consistent text wrapping in CampaignCard component
Kariamos Jul 21, 2025
d2900f5
fix: update word break style for improved text wrapping in GroupedTable
Kariamos Jul 21, 2025
70a0c5a
fix: ensure consistent text wrapping in TemplateCardsGrid component
Kariamos Jul 21, 2025
1e6fa4e
feat: Save and validate form before saving template
d-beezee Jul 21, 2025
338ca98
fix: Remove validateform
d-beezee Jul 21, 2025
cb3cf80
fix: update table style for improved text wrapping
Kariamos Jul 21, 2025
6485377
fix: Remove destroy sessions
d-beezee Jul 21, 2025
4bcee39
Merge pull request #1390 from AppQuality/fix-long-words-overflow
d-beezee Jul 21, 2025
5cdcd74
test: Remove check destroy sessions
d-beezee Jul 21, 2025
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
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
"@analytics/google-tag-manager": "^0.6.0",
"@analytics/segment": "^2.1.0",
"@appquality/languages": "1.4.3",
"@appquality/unguess-design-system": "4.0.42",
"@appquality/unguess-design-system": "4.0.46",
"@atlaskit/pragmatic-drag-and-drop": "^1.7.4",
"@atlaskit/pragmatic-drag-and-drop-flourish": "^2.0.3",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
"@headwayapp/react-widget": "^0.0.4",
"@reduxjs/toolkit": "^1.8.0",
"@sentry/react": "^8.32.0",
"@zendeskgarden/svg-icons": "^7.2.0",
"comuni-province-regioni": "^0.4.3",
"analytics": "^0.8.16",
"comuni-province-regioni": "^0.4.3",
"date-fns": "^2.28.0",
"formik": "^2.2.9",
"i18n-iso-countries": "^7.3.0",
Expand Down
2 changes: 0 additions & 2 deletions src/app/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ import bugsPageReducer from '../features/bugsPage/bugsPageSlice';
import filterReducer from '../features/campaignsFilter/campaignsFilterSlice';
import navigationReducer from '../features/navigation/navigationSlice';
import planModulesReducer from '../features/planModules';
import userReducer from '../features/user/userSlice';
import uxFilterReducer from '../features/uxFilters';
import workspaceReducer from '../features/workspaces/workspaceSlice';

export const store = configureStore({
reducer: {
user: userReducer,
navigation: navigationReducer,
workspaces: workspaceReducer,
filters: filterReducer,
Expand Down
3 changes: 3 additions & 0 deletions src/assets/icons/key.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/icons/template.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/icons/user.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 10 additions & 1 deletion src/common/Pages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import Manual from 'src/pages/Manual';
import MediaNotFound from 'src/pages/NotFound/MediaNotFound';
import NotFound from 'src/pages/NotFound/NotFound';
import Plan from 'src/pages/Plan';
import Profile from 'src/pages/Profile';
import Template from 'src/pages/Template';
import Templates from 'src/pages/Templates';
import Video from 'src/pages/Video';
Expand All @@ -45,7 +46,11 @@ const Pages = () => {
<Route
path={`/${langPrefix}`}
key={`react-router-${langPrefix}`}
errorElement={<ErrorBoundaryPage />}
errorElement={
process.env.NODE_ENV === 'development' ? undefined : (
<ErrorBoundaryPage />
)
}
>
<Route
path={`/${langPrefix}/campaigns/:campaignId`}
Expand Down Expand Up @@ -116,6 +121,10 @@ const Pages = () => {
/>
<Route path={`/${langPrefix}/oops`} element={<NotFound />} />
<Route index element={<Dashboard />} />
<Route
path={`/${langPrefix}/profile`}
element={<Profile />}
/>
</Route>
))}

Expand Down
6 changes: 3 additions & 3 deletions src/common/Track.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useEffect } from 'react';
import { Helmet } from 'react-helmet';
import { useLocation } from 'react-router-dom';
import { useAppSelector } from 'src/app/hooks';
import { useGetUsersMeQuery } from 'src/features/api';
import { useActiveWorkspace } from 'src/hooks/useActiveWorkspace';
import { useAnalytics } from 'use-analytics';

Expand All @@ -26,7 +26,7 @@ export const Track = ({
title: string;
children: React.ReactNode;
}) => {
const { userData } = useAppSelector((state) => state.user);
const { data: userData, isLoading, isSuccess } = useGetUsersMeQuery();
const { activeWorkspace } = useActiveWorkspace();
const { track, identify, page } = useAnalytics();
const location = useLocation();
Expand All @@ -44,7 +44,7 @@ export const Track = ({
);

useEffect(() => {
if (userData?.role && activeWorkspace?.company) {
if (!isLoading && isSuccess && userData?.role && activeWorkspace?.company) {
identify(`profile_${userData.profile_id}`, {
role: userData.role,
customer_role: userData.customer_role,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { MD, theme } from '@appquality/unguess-design-system';
import { ReactComponent as X } from 'src/assets/icons/password-check-x.svg';
import { ReactComponent as Check } from 'src/assets/icons/password-check-v.svg';
import { useFormikContext } from 'formik';
import { useTranslation } from 'react-i18next';
import { JoinFormValues } from '../valuesType';

const PasswordRequirement = ({
check,
Expand All @@ -29,30 +27,23 @@ const PasswordRequirement = ({
</li>
);

const PasswordRequirements = () => {
const { values } = useFormikContext<JoinFormValues>();
const PasswordRequirements = ({ password }: { password: string }) => {
const { t } = useTranslation();

return (
<div data-qa="password-requirements" className="aq-mb-3">
<MD>{t('PASSWORD_VALIDATOR_PASSWORD_REQUIREMENTS')}</MD>
<ul>
<PasswordRequirement check={() => values.password.length >= 6}>
<PasswordRequirement check={() => password.length >= 6}>
{t('PASSWORD_VALIDATOR_MINIMUM_OF_6_CHARACTERS')}
</PasswordRequirement>
<PasswordRequirement
check={() => values.password.match(/[A-Z]/) !== null}
>
<PasswordRequirement check={() => password.match(/[A-Z]/) !== null}>
{t('PASSWORD_VALIDATOR_CONTAIN_AN_UPPERCASE_LETTER')}
</PasswordRequirement>
<PasswordRequirement
check={() => values.password.match(/[a-z]/) !== null}
>
<PasswordRequirement check={() => password.match(/[a-z]/) !== null}>
{t('PASSWORD_VALIDATOR_CONTAIN_A_LOWERCASE_LETTER')}
</PasswordRequirement>
<PasswordRequirement
check={() => values.password.match(/[0-9]/) !== null}
>
<PasswordRequirement check={() => password.match(/[0-9]/) !== null}>
{t('PASSWORD_VALIDATOR_CONTAIN_A_NUMBER')}
</PasswordRequirement>
</ul>
Expand Down
193 changes: 102 additions & 91 deletions src/common/components/inviteUsers/userItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import {
} from '@appquality/unguess-design-system';
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useAppSelector } from 'src/app/hooks';
import { appTheme } from 'src/app/theme';
import { GetWorkspacesByWidUsersApiResponse } from 'src/features/api';
import {
GetWorkspacesByWidUsersApiResponse,
useGetUsersMeQuery,
} from 'src/features/api';
import styled from 'styled-components';
import { getInitials } from '../navigation/header/utils';
import RemoveConfirmModal from './modals/RemoveConfirmModal';
Expand Down Expand Up @@ -40,7 +42,8 @@ export const UserItem = ({
showRemoveConfirm?: boolean;
}) => {
const { t } = useTranslation();
const { userData } = useAppSelector((state) => state.user);
const { data: userData, isLoading, isSuccess } = useGetUsersMeQuery();

const [showRemoveConfirmModal, setShowRemoveConfirmModal] = useState(false);

const handleRemoveUser = () => {
Expand All @@ -49,103 +52,111 @@ export const UserItem = ({

const isMe = userData?.email === user.email;

if (isLoading || !isSuccess || !userData) return null;

return (
<>
<UserListItem key={`profile_${user.profile_id}`}>
<Avatar avatarType="text" style={{ flexShrink: 0 }}>
{getInitials(user.name.length ? user.name : user.email)}
</Avatar>
<div>
<MD
isBold
style={{
color: getColor(appTheme.colors.primaryHue, 600),
}}
>
<StyledEllipsis>
{user.name.length ? user.name : user.email}{' '}
{isMe && t('__WORKSPACE_SETTINGS_CURRENT_MEMBER_YOU_LABEL')}
</StyledEllipsis>
</MD>
{user.name.length > 0 && (
<SM
!isLoading &&
isSuccess &&
userData && (
<>
<UserListItem key={`profile_${user.profile_id}`}>
<Avatar avatarType="text" style={{ flexShrink: 0 }}>
{getInitials(user.name.length ? user.name : user.email)}
</Avatar>
<div>
<MD
isBold
style={{
color: appTheme.palette.grey[700],
color: getColor(appTheme.colors.primaryHue, 600),
}}
>
<StyledEllipsis>{user.email}</StyledEllipsis>
</SM>
)}
</div>
{onResendInvite && onRemoveUser ? (
<div style={{ marginLeft: 'auto' }}>
{!isMe && (
<ButtonMenu
label={
user.invitationPending
? t('__WORKSPACE_SETTINGS_MEMBER_INVITATION_PENDING_LABEL')
: t('__WORKSPACE_SETTINGS_MEMBER_ACTIONS_LABEL')
}
buttonProps={{
style: user.invitationPending
? { color: appTheme.palette.orange[600] }
: {},
<StyledEllipsis>
{user.name.length ? user.name : user.email}{' '}
{isMe && t('__WORKSPACE_SETTINGS_CURRENT_MEMBER_YOU_LABEL')}
</StyledEllipsis>
</MD>
{user.name.length > 0 && (
<SM
style={{
color: appTheme.palette.grey[700],
}}
onSelect={(value) => {
if (value === 'invite') {
onResendInvite();
return;
>
<StyledEllipsis>{user.email}</StyledEllipsis>
</SM>
)}
</div>
{onResendInvite && onRemoveUser ? (
<div style={{ marginLeft: 'auto' }}>
{!isMe && (
<ButtonMenu
label={
user.invitationPending
? t(
'__WORKSPACE_SETTINGS_MEMBER_INVITATION_PENDING_LABEL'
)
: t('__WORKSPACE_SETTINGS_MEMBER_ACTIONS_LABEL')
}
buttonProps={{
style: user.invitationPending
? { color: appTheme.palette.orange[600] }
: {},
}}
onSelect={(value) => {
if (value === 'invite') {
onResendInvite();
return;
}

if (value === 'remove') {
if (showRemoveConfirm) {
handleRemoveUser();
} else {
onRemoveUser();
if (value === 'remove') {
if (showRemoveConfirm) {
handleRemoveUser();
} else {
onRemoveUser();
}
}
}
}}
>
{user.invitationPending && (
<ButtonMenu.Item value="invite">
{t('__WORKSPACE_SETTINGS_MEMBER_RESEND_INVITE_ACTION')}
}}
>
{user.invitationPending && (
<ButtonMenu.Item value="invite">
{t('__WORKSPACE_SETTINGS_MEMBER_RESEND_INVITE_ACTION')}
</ButtonMenu.Item>
)}
<ButtonMenu.Item value="remove">
<Span hue={appTheme.components.text.dangerColor}>
{t('__WORKSPACE_SETTINGS_MEMBER_REMOVE_USER_ACTION')}
</Span>
</ButtonMenu.Item>
)}
<ButtonMenu.Item value="remove">
<Span hue={appTheme.components.text.dangerColor}>
{t('__WORKSPACE_SETTINGS_MEMBER_REMOVE_USER_ACTION')}
</Span>
</ButtonMenu.Item>
</ButtonMenu>
)}
</div>
) : (
<>
{user.invitationPending && (
<Span
style={{ marginLeft: 'auto' }}
hue={appTheme.palette.orange[600]}
>
{t('__WORKSPACE_SETTINGS_MEMBER_INVITATION_PENDING_LABEL')}
</Span>
)}
{!user.invitationPending && (
<Span
style={{ marginLeft: 'auto' }}
hue={appTheme.palette.grey[700]}
>
{t('__WORKSPACE_SETTINGS_MEMBER_ACTIONS_LABEL')}
</Span>
)}
</>
</ButtonMenu>
)}
</div>
) : (
<>
{user.invitationPending && (
<Span
style={{ marginLeft: 'auto' }}
hue={appTheme.palette.orange[600]}
>
{t('__WORKSPACE_SETTINGS_MEMBER_INVITATION_PENDING_LABEL')}
</Span>
)}
{!user.invitationPending && (
<Span
style={{ marginLeft: 'auto' }}
hue={appTheme.palette.grey[700]}
>
{t('__WORKSPACE_SETTINGS_MEMBER_ACTIONS_LABEL')}
</Span>
)}
</>
)}
</UserListItem>
{showRemoveConfirmModal && onRemoveUser && (
<RemoveConfirmModal
onClose={(includeShared) => onRemoveUser(includeShared)}
handleCancel={() => setShowRemoveConfirmModal(false)}
/>
)}
</UserListItem>
{showRemoveConfirmModal && onRemoveUser && (
<RemoveConfirmModal
onClose={(includeShared) => onRemoveUser(includeShared)}
handleCancel={() => setShowRemoveConfirmModal(false)}
/>
)}
</>
</>
)
);
};
Loading
Loading