ソースを参照

RIFFMASTER: add removing song

Kuba 2 年 前
コミット
ba6fd2dfae
38 ファイル変更50 行追加10 行削除
  1. 4 3
      Backend/Spring/.idea/workspace.xml
  2. 1 0
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java
  3. 1 1
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java
  4. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class
  5. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  6. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class
  7. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  8. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/1.pack
  9. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack
  10. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack
  11. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack
  12. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack
  13. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/14.pack
  14. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack
  15. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack
  16. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack
  17. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack
  18. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old
  19. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/155263774989bb94efeceb045debd43cf19b2ba793dae177b5925c723c604d25.json
  20. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/230e4962fae60c4faf40aa2f593c454c9d412a381b387b90aa32423660630cc6.json
  21. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/26974d5c50759fe2b111d5b6791a24abeabfbdea7c2e62ee18baa985c0352ab5.json
  22. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/635eef1cc4de3537bb385153976444a556b6a758c47591f6949e144f1b6e11a5.json
  23. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/791f7994ccb5b91e50909c7c62a3d8290bf9a082461c34282268f4fd6e8aa460.json
  24. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a41f903636b1515b581fe07059ea11cbf6e477b550346b8a826648f95e4d8f08.json
  25. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a58378efb65fc3adf9fd602f416316b8d08fb25e50f5371c9eb83ee8ffed5b98.json
  26. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a61ae228ff6002e49df0c6158ddc098c698c4b39ceef7f2ef8bd358561055778.json
  27. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b1bde85a8a9e588e9ebe8b80b77c90cd4f0cad8781878ee761b0492f06bd03d6.json
  28. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d2a6c39a15443680fab752f9d176dfb52c66e39aaffb19109940e095b47c534a.json
  29. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/dd2709021f0d5f5ddb8dcd3991614616d38960e69ff533c5e1aff1f079615fa3.json
  30. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/df79ddb64a3e0f9807bd192d3edc70132fc5093c3915f7d1dda6a2290967dcf1.json
  31. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e9ade93cd7ff9e8058159b2d4298dd8dacbc477f40a902d2f706bec98631edee.json
  32. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/faf4ee8c4cbd8b20ffb83ffabaf62a85c4c28d6d206541ae276ac0a24216a5b5.json
  33. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fe2f7edd32eb73218bc497545605369c8ecde2c5e2c4d6878ddc9345728584de.json
  34. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ff7efdf243f80e0cc45e3bede0bf3407253d82466245c4b20c0a2d078d627669.json
  35. 1 4
      Frontend/RiffMasterFront/.idea/workspace.xml
  36. 4 1
      Frontend/RiffMasterFront/src/app/Services/song.service.ts
  37. 7 1
      Frontend/RiffMasterFront/src/app/main-page/main-page.component.html
  38. 32 0
      Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts

+ 4 - 3
Backend/Spring/.idea/workspace.xml

@@ -10,13 +10,14 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="8315de53-8c15-472c-a710-45938463dc02" name="Changes" comment="RIFFMASTER: add frontend files">
-      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/song.service.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/song.service.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.css" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.css" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts" afterDir="false" />
     </list>
@@ -223,7 +224,7 @@
       <workItem from="1686898654444" duration="1889000" />
       <workItem from="1686909268841" duration="15817000" />
       <workItem from="1686937489475" duration="803000" />
-      <workItem from="1686986592460" duration="2993000" />
+      <workItem from="1686986592460" duration="4442000" />
     </task>
     <task id="LOCAL-00001" summary="add basic hello world and transfering data to server">
       <created>1679575346987</created>

+ 1 - 0
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java

@@ -82,6 +82,7 @@ public class SecurityConfiguration {
                         .requestMatchers("/riffmaster/login*").permitAll()
                         .requestMatchers("/riffs/song/**").permitAll()
                         .requestMatchers("/song**").permitAll()
+                        .requestMatchers("/song/{id}").permitAll()
                         .requestMatchers("/riffs**").permitAll()
                         .requestMatchers("/pdf/**").permitAll()
                         .requestMatchers("/appUsers*").hasAnyRole("ADMIN", "USER")

+ 1 - 1
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java

@@ -92,7 +92,7 @@ public class SongController {
 
 //#################################################################################_DELETE A SONG
 
-    @DeleteMapping("/{id}")
+    @DeleteMapping("/song/{id}")
     public ResponseEntity<Void> deleteSong(@PathVariable("id") long id)
     {
         Optional<Song> song = Optional.ofNullable(songService.getSong(id));

BIN
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class


BIN
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class


BIN
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class


BIN
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/1.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/14.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/155263774989bb94efeceb045debd43cf19b2ba793dae177b5925c723c604d25.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/230e4962fae60c4faf40aa2f593c454c9d412a381b387b90aa32423660630cc6.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/26974d5c50759fe2b111d5b6791a24abeabfbdea7c2e62ee18baa985c0352ab5.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/635eef1cc4de3537bb385153976444a556b6a758c47591f6949e144f1b6e11a5.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/791f7994ccb5b91e50909c7c62a3d8290bf9a082461c34282268f4fd6e8aa460.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a41f903636b1515b581fe07059ea11cbf6e477b550346b8a826648f95e4d8f08.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a58378efb65fc3adf9fd602f416316b8d08fb25e50f5371c9eb83ee8ffed5b98.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a61ae228ff6002e49df0c6158ddc098c698c4b39ceef7f2ef8bd358561055778.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b1bde85a8a9e588e9ebe8b80b77c90cd4f0cad8781878ee761b0492f06bd03d6.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d2a6c39a15443680fab752f9d176dfb52c66e39aaffb19109940e095b47c534a.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/dd2709021f0d5f5ddb8dcd3991614616d38960e69ff533c5e1aff1f079615fa3.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/df79ddb64a3e0f9807bd192d3edc70132fc5093c3915f7d1dda6a2290967dcf1.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e9ade93cd7ff9e8058159b2d4298dd8dacbc477f40a902d2f706bec98631edee.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/faf4ee8c4cbd8b20ffb83ffabaf62a85c4c28d6d206541ae276ac0a24216a5b5.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fe2f7edd32eb73218bc497545605369c8ecde2c5e2c4d6878ddc9345728584de.json


ファイルの差分が大きいため隠しています
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ff7efdf243f80e0cc45e3bede0bf3407253d82466245c4b20c0a2d078d627669.json


+ 1 - 4
Frontend/RiffMasterFront/.idea/workspace.xml

@@ -7,10 +7,7 @@
     <list default="true" id="d91bc08d-d968-4797-8fb3-ef602a37db2a" name="Changes" comment="RIFFMASTER: add frontend business logic (riff, song)">
       <change beforePath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/PdfController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/PdfController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/IPdfService.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/IPdfService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/PdfService.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/PdfService.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -104,7 +101,7 @@
       <workItem from="1686898660229" duration="4682000" />
       <workItem from="1686909264196" duration="8471000" />
       <workItem from="1686937499471" duration="1137000" />
-      <workItem from="1686989529474" duration="1409000" />
+      <workItem from="1686989529474" duration="3329000" />
     </task>
     <task id="LOCAL-00001" summary="RIFFMASTER: add frontend project">
       <created>1685976235580</created>

+ 4 - 1
Frontend/RiffMasterFront/src/app/Services/song.service.ts

@@ -115,7 +115,10 @@ export class SongService {
     return this.http.get(`${this.pdfUrl}/${songId}`, { responseType: 'blob' });
   }
 
-
+  deleteSong(id: number): Observable<void> {
+    const url = `${this.apiUrl}/${id}`;
+    return this.http.delete<void>(url);
+  }
 
 
 }

+ 7 - 1
Frontend/RiffMasterFront/src/app/main-page/main-page.component.html

@@ -2,7 +2,13 @@
 
 <div class="container">
   <!-- ----------------------------------------------------------------------------------------------------col1 -->
-  <div class="margin-column"></div> <!-- First margin column -->
+  <div class="margin-column">
+    <!-- Add the remove button here -->
+    <button mat-raised-button color="warn" *ngIf="canRemoveSongs()" (click)="removeSelectedSong()" [disabled]="!selectedSong">
+      <mat-icon>delete</mat-icon>
+      Remove Song
+    </button>
+  </div>
   <!-- ----------------------------------------------------------------------------------------------------col2 -->
   <div class="col-left">
 

+ 32 - 0
Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts

@@ -90,6 +90,7 @@ export class MainPageComponent implements OnInit {
         (uploadedSong: Song) => {
           console.log('Song uploaded successfully:', uploadedSong);
           this.getAllSongs();
+          this.selectedSong = uploadedSong;
         },
         (error) => {
           console.error('Error uploading song:', error);
@@ -148,4 +149,35 @@ export class MainPageComponent implements OnInit {
     }
   }
 
+
+  canRemoveSongs(): boolean {
+    // Check if the user has "moderator" or "admin" role
+    //return this.authService.hasRole('moderator') || this.authService.hasRole('admin');
+    return true;
+  }
+
+  removeSelectedSong(): void {
+    if (this.selectedSong) {
+      this.songService.deleteSong(this.selectedSong.id).subscribe(
+        () => {
+          this.getAllSongs();//refresh the list
+          this.selectedSong.riffs = [];
+        },
+        (error: any) => {
+          console.error('Error deleting song:', error);
+          // Handle error if needed
+        }
+      );
+    }
+  }
+
+
+
+
+
+
+
+
+
+
 }

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません