-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
migrate events atoms to reatom3 #856
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThe changes include the addition of a Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant API
participant ConfigRepo
participant AbortController
Client->>ConfigRepo: Get Application ID
Client->>AbortController: Create abort controller
Client->>API: GET /events with params
API->>Client: Return events list
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Bundle size diff
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 19
🧹 Outside diff range comments (1)
src/features/intercom/index.ts (1)
Line range hint
18-71
: Consider modernizing the Intercom initialization code.While not directly related to the atom migration, the
connectAndConfigureIntercom
function could benefit from some modernization:
- Replace
globalThis
withwindow
for better browser compatibility.- Use optional chaining (
?.
) instead of the non-null assertion operator (!
) for safer property access.- Consider using
addEventListener
consistently instead of mixing it withattachEvent
.Here's a sample of how you could start refactoring:
function connectAndConfigureIntercom() { const { name, email, intercomAppId, intercomSelector } = configRepo.getIntercomSettings(); // Reset intercom session for unregistered users on startup document.cookie = `intercom-session-${intercomAppId}= ; expires = Thu, 01 Jan 1970 00:00:00 GMT`; if (!window.intercomSettings) { window.intercomSettings = { name, app_id: intercomAppId, custom_launcher_selector: intercomSelector, ...(email && { email }), }; } // ... (continue refactoring the rest of the function) }Consider opening a separate PR for this refactoring if it's out of scope for the current migration.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (12)
- .cursorignore (1 hunks)
- package.json (1 hunks)
- src/core/api/events.ts (1 hunks)
- src/core/resources/bivariateStatisticsResource/index.ts (1 hunks)
- src/core/shared_state/currentEvent.ts (1 hunks)
- src/core/shared_state/currentEventFeed.ts (1 hunks)
- src/features/events_list/atoms/autoSelectEvent.ts (1 hunks)
- src/features/events_list/atoms/eventListResource.ts (2 hunks)
- src/features/events_list/components/FeedSelector/FeedSelector.tsx (2 hunks)
- src/features/intercom/IntercomBTN.tsx (1 hunks)
- src/features/intercom/index.ts (1 hunks)
- src/utils/atoms/v3tov2.ts (1 hunks)
🔇 Additional comments (21)
src/features/intercom/IntercomBTN.tsx (1)
Line range hint
2-9
: Verify migration ofintercomVisibleAtom
and consider adding a TODO comment.The component logic remains unchanged, which is good. However, please ensure that
intercomVisibleAtom
has also been migrated to reatom3 if necessary.Additionally, since this component is just a placeholder, consider adding a TODO comment to remind developers to implement the actual Intercom button functionality in the future.
To verify the migration of
intercomVisibleAtom
, please run the following script:#!/bin/bash # Description: Check the implementation of intercomVisibleAtom echo "Checking the implementation of intercomVisibleAtom:" rg --type typescript --type tsx "intercomVisibleAtom" -A 5This will help ensure that
intercomVisibleAtom
is properly implemented using reatom3.Consider adding a TODO comment like this:
/* Just placeholder */ +// TODO: Implement actual Intercom button functionality export function IntercomBTN() { const [isVisible] = useAtom(intercomVisibleAtom); return isVisible ? <div style={{ width: '50px', height: '40px' }}></div> : null; }
.cursorignore (5)
2-4
: Test-related ignore patterns look good.The ignore patterns for test-related directories and files are appropriate. Excluding these from indexing can improve performance and reduce noise in search results.
Also applies to: 10-10
7-7
: Clarify the reason for ignoring the GitHub Actions workflow file.It's uncommon to ignore CI/CD configuration files during indexing. Could you please explain the rationale behind ignoring
.github/workflows/run_e2e_tests.yml
? This file is typically important for maintaining and reviewing the CI/CD process.
8-8
: Verify the scope of ignored helper and script directories.Could you please clarify the contents and purpose of the
.helpers
,scripts
, andserver
directories? Ignoring these directories might exclude important parts of the codebase from indexing. If they contain only build or development scripts, the ignore patterns are appropriate. However, if they contain application logic or important utilities, you might want to reconsider ignoring them.Also applies to: 20-21
12-14
: Build, output, and public directories are appropriately ignored.The ignore patterns for build output, configuration, and public asset directories are well-defined. Excluding these directories from indexing is a good practice as they often contain generated or static files that don't need to be indexed.
Also applies to: 19-19
1-25
: Overall, the.cursorignore
file is well-structured and comprehensive.The file covers a wide range of directories and file patterns commonly excluded from indexing. Here's a summary of the main points:
- Test, fixture, and configuration file patterns are well-defined and appropriate.
- Some patterns could be optimized or combined for brevity.
- Clarification is needed on ignoring the GitHub Actions workflow file and certain directories (
.helpers
,scripts
,server
).Consider addressing the points raised in the previous comments to ensure that the ignore patterns align with your project's specific needs and best practices.
src/core/api/events.ts (2)
1-3
: LGTM: Imports are appropriate and well-structured.The imports are relevant to the file's purpose, using proper TypeScript practices for type imports.
1-25
: Overall, the implementation looks good with room for minor improvements.The new
events.ts
file successfully introduces functionality for retrieving events through an API call, aligning with the PR objective to migrate events atoms. The code is well-structured and uses TypeScript features appropriately.Key points:
- The imports are relevant and well-organized.
- The
EventListParams
interface provides a clear structure for query parameters.- The
getEventsList
function implements the core functionality effectively.Consider implementing the suggested improvements for enhanced type safety, error handling, and code robustness. These changes will make the code more maintainable and reliable in the long run.
src/features/events_list/components/FeedSelector/FeedSelector.tsx (2)
18-18
: LGTM: Removal ofscheduleAutoSelect
from dependency arrayThe removal of
scheduleAutoSelect
from theuseCallback
dependency array is consistent with the reported changes. This simplifies the component's logic by focusing solely on setting the current feed.
Line range hint
1-41
: Verify complete changes mentioned in the AI summaryThe AI summary mentions the removal of the
useAction
import andscheduleAutoSelect
function, which are not visible in the provided code diff. Could you please verify if these changes have been made?To help verify these changes, you can run the following script:
This script will help confirm if the mentioned changes have been fully implemented.
✅ Verification successful
Verified removal of
useAction
import andscheduleAutoSelect
function.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the removal of useAction import and scheduleAutoSelect function # Test 1: Check for useAction import echo "Checking for useAction import:" rg --type typescript 'import.*useAction' src/features/events_list/components/FeedSelector/FeedSelector.tsx # Test 2: Check for scheduleAutoSelect function echo "Checking for scheduleAutoSelect function:" rg --type typescript 'const scheduleAutoSelect' src/features/events_list/components/FeedSelector/FeedSelector.tsx # Test 3: Check for any remaining uses of scheduleAutoSelect echo "Checking for any remaining uses of scheduleAutoSelect:" rg --type typescript 'scheduleAutoSelect' src/features/events_list/components/FeedSelector/FeedSelector.tsxLength of output: 720
Script:
#!/bin/bash # Description: Verify the removal of useAction import and scheduleAutoSelect function without relying on file type # Test 1: Check for useAction import echo "Checking for useAction import:" rg 'import.*useAction' src/features/events_list/components/FeedSelector/FeedSelector.tsx # Test 2: Check for scheduleAutoSelect function echo "Checking for scheduleAutoSelect function:" rg 'const scheduleAutoSelect' src/features/events_list/components/FeedSelector/FeedSelector.tsx # Test 3: Check for any remaining uses of scheduleAutoSelect echo "Checking for any remaining uses of scheduleAutoSelect:" rg 'scheduleAutoSelect' src/features/events_list/components/FeedSelector/FeedSelector.tsxLength of output: 561
src/features/events_list/atoms/eventListResource.ts (4)
9-9
: LGTM: Import changes align with new event fetching mechanism.The addition of
getEventsList
import and the removal ofapiClient
(as mentioned in the AI summary) are consistent with the shift in the event fetching mechanism. This change promotes a more modular approach and potentially improves testability.
21-21
: LGTM: Improved type safety with EventListParams.The update to use
EventListParams
type for theparams
object enhances type safety and clarity. This change aligns well with the migration to reatom3 and follows good practices by using specific types instead of inline object definitions.
26-26
: LGTM: Improved event fetching mechanism.The switch to using
getEventsList
function for fetching events is a positive change. It simplifies the code by encapsulating API call details and maintains support for request cancellation throughabortController
. This change is consistent with the import modifications and contributes to a more modular codebase.
Line range hint
9-26
: LGTM: Successful migration to reatom3 with improved code quality.The changes in this file successfully migrate the events atoms to reatom3 while also improving code quality. Key improvements include:
- Enhanced modularity by using a dedicated
getEventsList
function.- Improved type safety with the
EventListParams
type.- Maintained support for request cancellation and error handling.
These changes contribute to a more maintainable and potentially more testable codebase. The consistency across imports, type definitions, and function usage is commendable.
src/core/resources/bivariateStatisticsResource/index.ts (3)
18-18
: LGTM! Good addition for debugging and tracking.The addition of the string identifier 'bivariateStatisticsDependencyAtom' as the second argument to the
v3toV2
function is a positive change. This identifier enhances the atom's metadata without altering its functionality, which can be beneficial for debugging and tracking purposes.
Line range hint
24-79
: No changes required in bivariateStatisticsResourceAtomThe modification to
bivariateStatisticsDependencyAtom
doesn't impact the functionality or behavior ofbivariateStatisticsResourceAtom
. The latter continues to use the former as a dependency correctly, and no adjustments are necessary here.
Line range hint
1-79
: Verify PR objective: Is this part of the reatom3 migration?The changes in this file are minimal and don't seem to directly relate to migrating events atoms to reatom3 as mentioned in the PR objective. While the addition of the string identifier is a good practice, it's worth confirming if this change is part of a larger migration process or if additional changes are needed to fully meet the PR objective.
Could you clarify how this change contributes to the migration to reatom3? Are there any additional steps or files that need to be modified as part of this migration?
src/features/intercom/index.ts (2)
13-13
: LGTM! Correct usage of the migrated atom.The
intercomVisibleAtom
is now correctly used with the new reatom3 syntax, passing the context (ctx
) as the first argument.
Line range hint
1-71
: Summary: Successful migration to reatom3 with potential for further improvements.The PR successfully achieves its main objective of migrating the
intercomVisibleAtom
to reatom3. The changes are minimal and focused, which is good for reducing the risk of introducing bugs.Next steps to consider:
- Ensure that all usages of
intercomVisibleAtom
across the codebase have been updated to the new syntax.- Consider modernizing the Intercom initialization code in a separate PR.
- Add unit tests for the new atom usage if they don't already exist.
To ensure all usages of
intercomVisibleAtom
have been updated, run the following script:This will help identify any places where the old atom syntax might still be in use.
✅ Verification successful
All usages of
intercomVisibleAtom
are correctly updated to the new syntax, and no outdated.set
or.get
methods are found.The migration to reatom3 for
intercomVisibleAtom
has been successfully verified. All instances across the codebase use the updated syntax, and there are no remnants of the old implementation.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Find all usages of intercomVisibleAtom and verify they use the new syntax # Search for intercomVisibleAtom usages echo "Searching for intercomVisibleAtom usages:" rg "intercomVisibleAtom" --type typescript -C 2 # Specifically look for old syntax (this should ideally return no results) echo "\nChecking for potential outdated usages:" rg "intercomVisibleAtom\.(set|get)" --type typescriptLength of output: 359
Script:
#!/bin/bash # Description: Find all usages of intercomVisibleAtom in TypeScript files and verify they use the new syntax # Search for intercomVisibleAtom usages in .ts and .tsx files echo "Searching for intercomVisibleAtom usages in .ts and .tsx files:" rg "intercomVisibleAtom" --glob "*.ts" --glob "*.tsx" -C 2 # Specifically look for old syntax (this should ideally return no results) echo "\nChecking for potential outdated usages (.set or .get) in intercomVisibleAtom:" rg "intercomVisibleAtom\.(set|get)" --glob "*.ts" --glob "*.tsx"Length of output: 1744
package.json (2)
99-99
: New dependency @reatom/primitives added.The addition of
@reatom/primitives
at version^3.7.3
is consistent with the PR objective of migrating events atoms to reatom3. This package likely provides essential primitives for the migration process.Let's verify the compatibility of this new dependency with the existing project setup:
98-98
: Version update for @reatom/npm-react looks good.The update from
^3.8.10
to^3.9.0
for@reatom/npm-react
is a minor version bump, which typically indicates new features or non-breaking improvements. This aligns well with the PR objective of migrating events atoms to reatom3.To ensure compatibility, let's check for any breaking changes or important updates in this version:
@@ -1,4 +1,4 @@ | |||
import { useAtom } from '@reatom/react-v2'; | |||
import { useAtom } from '@reatom/npm-react'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Inconsistency Detected in '@reatom' Imports
The import change from '@reatom/react-v2' to '@reatom/npm-react' has been applied in src/features/intercom/IntercomBTN.tsx
. However, multiple files across the codebase still import from '@reatom/react-v2', indicating incomplete migration.
Please ensure all instances of '@reatom/react-v2' are updated to '@reatom/npm-react' to maintain consistency and align with the migration to reatom3.
🔗 Analysis chain
LGTM! Verify consistency across the codebase.
The import change from '@reatom/react-v2' to '@reatom/npm-react' aligns with the PR objective of migrating to reatom3. This change looks good and should help in the migration process.
To ensure consistency across the codebase, please run the following script:
This will help identify any files that might need similar updates or any inconsistencies in the migration process.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for any remaining imports from '@reatom/react-v2' and new imports from '@reatom/npm-react'
echo "Checking for remaining '@reatom/react-v2' imports:"
rg --type typescript --type tsx "from '@reatom/react-v2'" -l
echo "Checking for new '@reatom/npm-react' imports:"
rg --type typescript --type tsx "from '@reatom/npm-react'" -l
echo "Checking for any other reatom-related imports:"
rg --type typescript --type tsx "from '@reatom/" -l
Length of output: 748
Script:
#!/bin/bash
# Description: Check for any remaining imports from '@reatom/react-v2' and new imports from '@reatom/npm-react'
echo "Checking for remaining '@reatom/react-v2' imports:"
rg --type ts --type tsx "from '@reatom/react-v2'" -l
echo "Checking for new '@reatom/npm-react' imports:"
rg --type ts --type tsx "from '@reatom/npm-react'" -l
echo "Checking for any other reatom-related imports:"
rg --type ts --type tsx "from '@reatom/" -l
Length of output: 582
Script:
#!/bin/bash
# Description: Check for any remaining imports from '@reatom/react-v2' and new imports from '@reatom/npm-react' using glob patterns
echo "Checking for remaining '@reatom/react-v2' imports:"
rg "from '@reatom/react-v2'" -l -g "*.ts" -g "*.tsx"
echo "Checking for new '@reatom/npm-react' imports:"
rg "from '@reatom/npm-react'" -l -g "*.ts" -g "*.tsx"
echo "Checking for any other reatom-related imports:"
rg "from '@reatom/" -l -g "*.ts" -g "*.tsx"
Length of output: 12130
./**/*.fixture.tsx | ||
./**/fixture/*.* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Fixture-related ignore patterns are comprehensive.
The ignore patterns for fixture files are well-defined, covering both TypeScript and TypeScript React files. However, there's a small optimization opportunity.
Consider combining lines 5 and 9 into a single pattern:
*.fixture.{ts,tsx}
This would cover both cases without the need for two separate entries.
Also applies to: 9-9
.helpers | ||
*.fixture.{ts,tsx} | ||
**/*.test.tsx | ||
appconfig.js |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Configuration file ignore patterns are appropriate.
The ignore patterns for various configuration files are well-defined and cover a wide range of tools and frameworks used in the project.
Consider using a more generic pattern to catch all configuration files:
*.config.{js,ts,cjs}
This would cover most of the configuration files and reduce the number of individual entries. You may still need to keep specific entries for files that don't follow this naming convention.
Also applies to: 15-16, 18-18, 22-25
export interface EventListParams { | ||
feed?: string; | ||
bbox?: string; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Consider adding type constraints or documentation for EventListParams.
The interface looks good, but consider the following suggestions:
- Add JSDoc comments to explain the purpose and expected format of each property.
- If possible, use more specific types for
feed
andbbox
instead of broadstring
types.
Example:
export interface EventListParams {
/** The feed identifier to filter events. */
feed?: string; // Consider using a union type if there are specific feed options
/** Bounding box coordinates for geographic filtering. Format: "min_lon,min_lat,max_lon,max_lat" */
bbox?: string; // Consider using a tuple type [number, number, number, number] if appropriate
}
export function getEventsList(params: EventListParams, abortController: AbortController) { | ||
return apiClient | ||
.get<Event[]>( | ||
'/events', | ||
{ | ||
appId: configRepo.get().id, | ||
...params, | ||
}, | ||
true, | ||
{ | ||
signal: abortController.signal, | ||
errorsConfig: { hideErrors: true }, | ||
}, | ||
) | ||
.then((response) => response ?? []); // Ensure we always return an array | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Improve error handling and config access in getEventsList function.
The function looks good overall, but consider the following improvements:
-
Error handling:
- Instead of suppressing all errors, consider handling specific error types or allowing certain errors to propagate.
- You might want to log errors even if they're not shown to the user.
-
Config access:
- The use of
configRepo.get().id
assumes the config is always available. Consider adding a null check or using a default value to prevent potential runtime errors.
- The use of
-
Return type:
- Explicitly declare the return type of the function for better type safety.
Example implementation:
export function getEventsList(params: EventListParams, abortController: AbortController): Promise<Event[]> {
const appId = configRepo.get()?.id; // Add null check
if (!appId) {
console.error('Application ID not found in config');
return Promise.resolve([]); // or throw an error
}
return apiClient
.get<Event[]>(
'/events',
{
appId,
...params,
},
true,
{
signal: abortController.signal,
errorsConfig: {
hideErrors: true,
onError: (error) => console.error('Error fetching events:', error), // Log errors
},
},
)
.then((response) => response ?? [])
.catch((error) => {
if (error.name === 'AbortError') {
console.log('Request was aborted');
} else {
console.error('Unexpected error:', error);
}
return [];
});
}
These changes improve error handling, add safety checks, and provide more information about potential issues during execution.
{} as Deps, | ||
(() => {}) as unknown as TrackReducer<State, Deps>, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Minimize use of type assertions to maintain type integrity.
Lines 31-32 involve multiple type assertions: { } as Deps
and (() => {}) as unknown as TrackReducer<State, Deps>
. Excessive type casting can bypass TypeScript's compile-time checks. Consider providing concrete implementations or adjusting the types to reduce the need for assertions.
// set correct v3atom type, because it's hardcoded in v2 types as v3.Atom | ||
const v2Atom = _v2Atom as Omit<typeof _v2Atom, 'v3atom'> & { v3atom: T }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Avoid unnecessary type assertions; ensure they're essential.
The type assertion on line 40 casts _v2Atom
to adjust the v3atom
type. While this might be necessary due to type limitations, it's advisable to minimize assertions. Investigate if the types can be restructured to eliminate the need for this cast without compromising type safety.
function actionV3ToV2<T extends any[], V>( | ||
[name, action]: [string, v3.Action<T>], | ||
targets?: V[], | ||
store = globalStore, | ||
): { name: string; actionCreator: ActionCreatorBinded } { | ||
const type = action.__reatom.name ?? `name_${actionIdCounter++}`; // `${actionName}_${v3atom?.__reatom.name}` | ||
): { name: string; actionCreator: ActionCreatorBinded<T[0]> } { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Improve generic type definitions for clarity and safety.
In the actionV3ToV2
function, T
is defined as any[]
, and ActionCreatorBinded<T[0]>
is used. This approach assumes that T
is an array where the first element is the payload type. If v3.Action<T>
represents an action with a specific payload type, consider defining T
as a single generic type parameter (e.g., T
) instead of an array. This enhances clarity and ensures accurate type checking.
// TEST, to be removed | ||
const a3 = v3.atom(0, 'zoot'); | ||
const a2 = v3toV2(a3); | ||
const a3_in_a2 = a2.v3atom; | ||
const aa = v3.atom((_) => _); | ||
const aa2 = v3toV2(aa); | ||
aa2.v3atom; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove or relocate test code to appropriate test files.
Lines 78-84 contain test code marked as "TEST, to be removed". Including test code within production files can lead to clutter and potential confusion. It may also inadvertently be included in production builds. Consider removing this test code or moving it to dedicated test files within your test suite.
currentEventFeedAtom(ctx, newFeedId ? { id: newFeedId } : null); | ||
// deselect current event | ||
currentEventAtom(ctx, { id: null }); | ||
scheduledAutoSelect(ctx, false); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incorrect atom state updates using function call syntax
In Reatom v3, atoms are no longer functions and should not be called directly to update their state. Instead, use ctx.set
to update the atom's value.
Please apply the following changes:
- currentEventFeedAtom(ctx, newFeedId ? { id: newFeedId } : null);
+ ctx.set(currentEventFeedAtom, newFeedId ? { id: newFeedId } : null);
- currentEventAtom(ctx, { id: null });
+ ctx.set(currentEventAtom, { id: null });
- scheduledAutoSelect(ctx, false);
+ ctx.set(scheduledAutoSelect, false);
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
currentEventFeedAtom(ctx, newFeedId ? { id: newFeedId } : null); | |
// deselect current event | |
currentEventAtom(ctx, { id: null }); | |
scheduledAutoSelect(ctx, false); | |
} | |
ctx.set(currentEventFeedAtom, newFeedId ? { id: newFeedId } : null); | |
// deselect current event | |
ctx.set(currentEventAtom, { id: null }); | |
ctx.set(scheduledAutoSelect, false); | |
} |
Summary by CodeRabbit
Release Notes
New Features
.cursorignore
file to improve indexing by ignoring specified directories and file patterns.Updates
package.json
file.@reatom/core
library, enhancing modularity and performance.Bug Fixes
Documentation