@@ -183,7 +183,7 @@ export default class ViewPreferencesManager {
183183 ) ;
184184
185185 // 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 ( ) ) ;
187187 const viewsToDelete = existingViewIds . filter ( id => ! newViewIds . includes ( id ) ) ;
188188
189189 await Promise . all (
@@ -195,7 +195,7 @@ export default class ViewPreferencesManager {
195195 // Save or update current views
196196 await Promise . all (
197197 views . map ( view => {
198- const viewId = view . id || this . _generateViewId ( view ) ;
198+ const viewId = view . id || this . _generateViewId ( ) ;
199199 const viewConfig = { ...view } ;
200200 delete viewConfig . id ; // Don't store ID in the config itself
201201
@@ -263,18 +263,19 @@ export default class ViewPreferencesManager {
263263 }
264264
265265 /**
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
267275 * @private
268276 */
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 ( ) ;
278279 }
279280}
280281
0 commit comments