Files
mostlymatter/webapp
Jesse Hallam 8127d105ad MM-63406: Update timezone automatically (#30856)
* MM-63406: Update timezone automatically

On focus as well as every 30 minutes, check if the timezone has changed.
Also, ignore the momentjs cache, otherwise this value is static as per https://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

> By default Moment Timezone caches the detected timezone. This means that subsequent calls to moment.tz.guess() will always return the same value.

* migrate away from enzyme

* MM-63406: Address PR feedback - add constants and improve comments

* MM-63406: Address PR feedback - Extract timezone logic to a separate component

- Created a new TimezoneManager component for handling timezone updates
- Used fake timers in tests to properly test the periodic update
- Removed visibility change handler to simplify the component

* fix linting

* Remove comments from getBrowserTimezone function

* Move updateTimezone function before useEffect

* Simplify timezone detection with Intl.DateTimeFormat().resolvedOptions().timeZone

* Fix style issues

* Improve timezone manager tests with jest.getTimerCount()

Used jest.getTimerCount() to verify timer cleanup on unmount instead of spying on clearInterval.
This change addresses PR feedback in #30856.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* MM-63406: Simplify timezone updates to check every minute

- Simplify timezone manager by removing focus event and only checking every minute
- Replace 30-minute interval with 1-minute interval for more responsive timezone detection
- Update tests to match new implementation
- Change removes focus/blur event handling as per PR feedback

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* revert to simpler approach

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-05-15 13:57:14 +00:00
..
2023-03-22 17:22:27 -04:00

Mattermost Web App

This folder contains the client code for the Mattermost web app. It's broken up into multiple packages each of which either contains an area of the app (such as playbooks) or shared logic used across other packages (such as the packages located in the platform directory). For anyone who's used to working in the mattermost/mattermost-webapp repo, most of that is now located in channels.

npm Workspaces

To interact with a workspace using npm, such as to add a dependency or run a script, use the --workspace (or --workspaces) flag. This can be done when using built-in npm commands such as npm add or when running scripts. Those commands should be run from this directory.

# Add a dependency to a single package
npm add react --workspace=playbooks

# Build multiple packages
npm run build --workspace=platform/client --workspace=platform/components

# Test all workspaces
npm test --workspaces

# Clean all workspaces that have a clean script defined
npm run clean --workspaces --if-present

To install dependencies for a workspace, simply run npm install from this folder as you would do normally. Most packages' dependencies will be included in the root node_modules, and all packages' dependencies will appear in the package-lock.json. A node_modules will only be created inside a package if one of its dependencies conflicts with that of another package.