@@ -183,7 +183,7 @@ export default class ViewPreferencesManager {
183
183
) ;
184
184
185
185
// Delete views that are no longer in the new views array
186
- const newViewIds = views . map ( view => view . id || this . _generateViewId ( view ) ) ;
186
+ const newViewIds = views . map ( view => view . id || this . _generateViewId ( ) ) ;
187
187
const viewsToDelete = existingViewIds . filter ( id => ! newViewIds . includes ( id ) ) ;
188
188
189
189
await Promise . all (
@@ -195,7 +195,7 @@ export default class ViewPreferencesManager {
195
195
// Save or update current views
196
196
await Promise . all (
197
197
views . map ( view => {
198
- const viewId = view . id || this . _generateViewId ( view ) ;
198
+ const viewId = view . id || this . _generateViewId ( ) ;
199
199
const viewConfig = { ...view } ;
200
200
delete viewConfig . id ; // Don't store ID in the config itself
201
201
@@ -263,18 +263,19 @@ export default class ViewPreferencesManager {
263
263
}
264
264
265
265
/**
266
- * Generates a unique ID for a view
266
+ * Generates a unique ID for a new view
267
+ * @returns {string } A UUID string
268
+ */
269
+ generateViewId ( ) {
270
+ return this . _generateViewId ( ) ;
271
+ }
272
+
273
+ /**
274
+ * Generates a unique ID for a view using UUID
267
275
* @private
268
276
*/
269
- _generateViewId ( view ) {
270
- if ( view . id ) {
271
- return view . id ;
272
- }
273
- // Generate a unique ID based on view name, timestamp, and random component
274
- const timestamp = Date . now ( ) . toString ( 36 ) ;
275
- const random = Math . random ( ) . toString ( 36 ) . substr ( 2 , 5 ) ;
276
- const nameHash = view . name ? view . name . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, '' ) . toLowerCase ( ) : 'view' ;
277
- return `${ nameHash } _${ timestamp } _${ random } ` ;
277
+ _generateViewId ( ) {
278
+ return crypto . randomUUID ( ) ;
278
279
}
279
280
}
280
281
0 commit comments