@@ -35,6 +35,50 @@ const useCosmeticsStore = create((set, get) => ({
3535 } ) ;
3636 } ,
3737
38+ removeUserStyle : ( username , body ) => {
39+ if ( ! username ) return ;
40+ const transformedUsername = username . toLowerCase ( ) ;
41+ const refId = body ?. object ?. ref_id ;
42+ const kind = body ?. object ?. kind ;
43+
44+ if ( ! refId || ! kind ) return ;
45+
46+ set ( ( state ) => {
47+ const currentStyle = state . userStyles [ transformedUsername ] ;
48+ if ( ! currentStyle ) return state ;
49+
50+ // Remove by kind and ref_id
51+ let updatedStyle = { ...currentStyle } ;
52+ let hasChanges = false ;
53+
54+ if ( kind === "BADGE" && currentStyle . badgeId === refId ) {
55+ updatedStyle . badgeId = null ;
56+ hasChanges = true ;
57+ } else if ( kind === "PAINT" && currentStyle . paintId === refId ) {
58+ updatedStyle . paintId = null ;
59+ hasChanges = true ;
60+ }
61+
62+ if ( ! hasChanges ) return state ;
63+
64+ // If both badge and paint are removed, remove the entire user style entry
65+ if ( ! updatedStyle . badgeId && ! updatedStyle . paintId ) {
66+ const { [ transformedUsername ] : removed , ...restUserStyles } = state . userStyles ;
67+ return { userStyles : restUserStyles } ;
68+ }
69+
70+ return {
71+ userStyles : {
72+ ...state . userStyles ,
73+ [ transformedUsername ] : {
74+ ...updatedStyle ,
75+ updatedAt : new Date ( ) . toISOString ( ) ,
76+ } ,
77+ } ,
78+ } ;
79+ } ) ;
80+ } ,
81+
3882 getUserStyle : ( username ) => {
3983 if ( ! username ) return null ;
4084 const transformedUsername = username . toLowerCase ( ) ;
0 commit comments