Compare commits
	
		
			10 Commits
		
	
	
		
			f0f1cd39b6
			...
			v1.0.2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					594bcc27ca | ||
| 
						 | 
					bcb934a155 | ||
| 
						 | 
					b31dcf901b | ||
| 
						 | 
					2c8485a1cd | ||
| 
						 | 
					f0d2bda024 | ||
| 
						 | 
					828c507742 | ||
| 
						 | 
					65b43e4c0d | ||
| 
						 | 
					728510a72d | ||
| 
						 | 
					89fd2f5f0d | ||
| 
						 | 
					52921e78b6 | 
@@ -5,11 +5,11 @@
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "loading_4.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_alarm.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_alarm.imageset/ic_alarm.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 781 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_alarm_selected.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_alarm_selected.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_alarm_selected.imageset/ic_alarm_selected.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 804 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_blog_purple.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_blog_purple.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_blog_purple.imageset/ic_blog_purple.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 Before Width: | Height: | Size: 1.3 KiB  | 
@@ -5,11 +5,11 @@
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "loading_1.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_heart_777.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_heart_777.imageset/ic_heart_777.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 830 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_instagram_purple.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_instagram_purple.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_instagram_purple.imageset/ic_instagram_purple.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
@@ -5,11 +5,11 @@
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "loading_3.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_kick_out.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_kick_out.imageset/ic_kick_out.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.5 KiB  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_message_send.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_message_send.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_message_send.imageset/ic_message_send.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 787 B  | 
@@ -9,7 +9,7 @@
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_headphones_purple.png",
 | 
			
		||||
      "filename" : "ic_message_square_777.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_message_square_777 1.imageset/ic_message_square_777.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 471 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_mic_paint.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_mic_paint.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_mic_paint.imageset/ic_mic_paint.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 694 B  | 
@@ -5,11 +5,11 @@
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "loading_2.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_mute.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_mute.imageset/ic_mute.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.6 KiB  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_place_holder.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_place_holder.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_place_holder.imageset/ic_place_holder.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 70 KiB  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_website_purple.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_website_purple.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_website_purple.imageset/ic_website_purple.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 926 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_youtube_play_purple.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "ic_youtube_play_purple.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_youtube_play_purple.imageset/ic_youtube_play_purple.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 858 B  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/img_compleate_book.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "img_compleate_book.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/img_compleate_book.imageset/img_compleate_book.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 21 KiB  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/img_noti_mute.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "img_noti_mute.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/img_noti_mute.imageset/img_noti_mute.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/img_thumb_default.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "img_thumb_default.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/img_thumb_default.imageset/img_thumb_default.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 6.3 KiB  | 
| 
		 Before Width: | Height: | Size: 3.7 KiB  | 
| 
		 Before Width: | Height: | Size: 3.2 KiB  | 
| 
		 Before Width: | Height: | Size: 5.1 KiB  | 
@@ -1,21 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "images" : [
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "1x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "filename" : "loading_5.png",
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "2x"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "idiom" : "universal",
 | 
			
		||||
      "scale" : "3x"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 4.6 KiB  | 
| 
		 Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB  | 
@@ -105,4 +105,6 @@ enum AppStep {
 | 
			
		||||
    case profileUpdate(refresh: () -> Void)
 | 
			
		||||
    
 | 
			
		||||
    case followingList
 | 
			
		||||
    
 | 
			
		||||
    case orderListAll
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ struct ContentListItemView: View {
 | 
			
		||||
                    
 | 
			
		||||
                    HStack(spacing: 13.3) {
 | 
			
		||||
                        HStack(spacing: 6) {
 | 
			
		||||
                            Image("ic_heart")
 | 
			
		||||
                            Image("ic_heart_777")
 | 
			
		||||
                                .resizable()
 | 
			
		||||
                                .frame(width: 13.3, height: 13.3)
 | 
			
		||||
                            
 | 
			
		||||
@@ -77,7 +77,7 @@ struct ContentListItemView: View {
 | 
			
		||||
                
 | 
			
		||||
                if item.price > 0 {
 | 
			
		||||
                    HStack(spacing: 8) {
 | 
			
		||||
                        Image("ic_coin_w")
 | 
			
		||||
                        Image("ic_can")
 | 
			
		||||
                            .resizable()
 | 
			
		||||
                            .frame(width: 17, height: 17)
 | 
			
		||||
                        
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,8 @@ final class ContentRepository {
 | 
			
		||||
        return api.requestPublisher(.registerComment(request: RegisterAudioContentCommentRequest(comment: comment, contentId: audioContentId, parentId: parentId)))
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func orderAudioContent(audioContentId: Int, orderType: OrderType) -> AnyPublisher<Response, MoyaError> {
 | 
			
		||||
        return api.requestPublisher(.orderAudioContent(request: OrderRequest(audioContentId: audioContentId, orderType: orderType)))
 | 
			
		||||
    func orderAudioContent(contentId: Int, orderType: OrderType) -> AnyPublisher<Response, MoyaError> {
 | 
			
		||||
        return api.requestPublisher(.orderAudioContent(request: OrderRequest(contentId: contentId, orderType: orderType)))
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func getOrderList(page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
 | 
			
		||||
@@ -74,6 +74,6 @@ final class ContentRepository {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func donation(contentId: Int, can: Int, comment: String) -> AnyPublisher<Response, MoyaError> {
 | 
			
		||||
        return api.requestPublisher(.donation(request: AudioContentDonationRequest(audioContentId: contentId, donationCan: can, comment: comment)))
 | 
			
		||||
        return api.requestPublisher(.donation(request: AudioContentDonationRequest(contentId: contentId, donationCan: can, comment: comment)))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -280,7 +280,7 @@ final class ContentDetailViewModel: ObservableObject {
 | 
			
		||||
        isShowPreviewAlert = false
 | 
			
		||||
        isLoading = true
 | 
			
		||||
        
 | 
			
		||||
        repository.orderAudioContent(audioContentId: contentId, orderType: orderType)
 | 
			
		||||
        repository.orderAudioContent(contentId: contentId, orderType: orderType)
 | 
			
		||||
            .sink { result in
 | 
			
		||||
                switch result {
 | 
			
		||||
                case .finished:
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,7 @@ struct ContentOrderDialogView: View {
 | 
			
		||||
                        Spacer()
 | 
			
		||||
                        
 | 
			
		||||
                        HStack(spacing: 8) {
 | 
			
		||||
                            Image("ic_coin_w")
 | 
			
		||||
                            Image("ic_can")
 | 
			
		||||
                                .resizable()
 | 
			
		||||
                                .frame(width: 16.7, height: 16.7)
 | 
			
		||||
                            
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
struct AudioContentDonationRequest: Encodable {
 | 
			
		||||
    let audioContentId: Int
 | 
			
		||||
    let contentId: Int
 | 
			
		||||
    let donationCan: Int
 | 
			
		||||
    let comment: String
 | 
			
		||||
    let container: String = "ios"
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ final class ContentModifyViewModel: ObservableObject {
 | 
			
		||||
            isLoading = true
 | 
			
		||||
            
 | 
			
		||||
            let request = ModifyContentRequest(
 | 
			
		||||
                audioContentId: contentId,
 | 
			
		||||
                contentId: contentId,
 | 
			
		||||
                title: title != audioContent!.title ? title : nil,
 | 
			
		||||
                detail: detail != audioContent!.detail ? detail : nil,
 | 
			
		||||
                isAdult: isAdult,
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
struct ModifyContentRequest: Encodable {
 | 
			
		||||
    let audioContentId: Int
 | 
			
		||||
    let contentId: Int
 | 
			
		||||
    let title: String?
 | 
			
		||||
    let detail: String?
 | 
			
		||||
    let isAdult: Bool
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
struct OrderRequest: Encodable {
 | 
			
		||||
    let audioContentId: Int
 | 
			
		||||
    let contentId: Int
 | 
			
		||||
    let orderType: OrderType
 | 
			
		||||
    let container: String = "ios"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -148,6 +148,9 @@ struct ContentView: View {
 | 
			
		||||
            case .followingList:
 | 
			
		||||
                FollowCreatorView()
 | 
			
		||||
                
 | 
			
		||||
            case .orderListAll:
 | 
			
		||||
                OrderListAllView()
 | 
			
		||||
                
 | 
			
		||||
            default:
 | 
			
		||||
                EmptyView()
 | 
			
		||||
                    .frame(width: 0, height: 0, alignment: .topLeading)
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ struct LiveRoomInfoEditDialog: View {
 | 
			
		||||
                                        .clipped()
 | 
			
		||||
                                        .cornerRadius(10)
 | 
			
		||||
                                } else {
 | 
			
		||||
                                    Image("ic_logo_220")
 | 
			
		||||
                                    Image("ic_logo")
 | 
			
		||||
                                        .resizable()
 | 
			
		||||
                                        .scaledToFit()
 | 
			
		||||
                                        .frame(width: 80, height: 116.8)
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ extension CanApi: TargetType {
 | 
			
		||||
            return "/charge"
 | 
			
		||||
            
 | 
			
		||||
        case .pgVerify:
 | 
			
		||||
            return "/charge/v2/verify"
 | 
			
		||||
            return "/charge/verify"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,11 @@ struct CanCardView_Previews: PreviewProvider {
 | 
			
		||||
                websiteUrl: "",
 | 
			
		||||
                blogUrl: "",
 | 
			
		||||
                liveReservationCount: 0,
 | 
			
		||||
                isAuth: false
 | 
			
		||||
                isAuth: false,
 | 
			
		||||
                orderList: GetAudioContentOrderListResponse(
 | 
			
		||||
                    totalCount: 0,
 | 
			
		||||
                    items: []
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
            refresh: {}
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,11 @@ struct MyInfoCardView_Previews: PreviewProvider {
 | 
			
		||||
                websiteUrl: "",
 | 
			
		||||
                blogUrl: "",
 | 
			
		||||
                liveReservationCount: 0,
 | 
			
		||||
                isAuth: false
 | 
			
		||||
                isAuth: false,
 | 
			
		||||
                orderList: GetAudioContentOrderListResponse(
 | 
			
		||||
                    totalCount: 0,
 | 
			
		||||
                    items: []
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
            refresh: {}
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -18,5 +18,6 @@ struct MyPageResponse: Decodable {
 | 
			
		||||
    let blogUrl: String?
 | 
			
		||||
    let liveReservationCount: Int
 | 
			
		||||
    let isAuth: Bool
 | 
			
		||||
    let orderList: GetAudioContentOrderListResponse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,11 @@ struct MyPageView: View {
 | 
			
		||||
                                    ReservationStatusView(data: data)
 | 
			
		||||
                                        .padding(.top, 33.3)
 | 
			
		||||
                                    
 | 
			
		||||
                                    if data.orderList.totalCount > 0 {
 | 
			
		||||
                                        OrderListView(items: data.orderList.items)
 | 
			
		||||
                                            .padding(.top, 40)
 | 
			
		||||
                                    }
 | 
			
		||||
                                    
 | 
			
		||||
                                    ServiceCenterButtonView()
 | 
			
		||||
                                        .padding(.top, 40)
 | 
			
		||||
                                    
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
//
 | 
			
		||||
//  GetAudioContentOrderListResponse.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 2023/08/24.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
struct GetAudioContentOrderListResponse: Decodable {
 | 
			
		||||
    let totalCount: Int
 | 
			
		||||
    let items: [GetAudioContentOrderListItem]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct GetAudioContentOrderListItem: Decodable {
 | 
			
		||||
    let contentId: Int
 | 
			
		||||
    let coverImageUrl: String
 | 
			
		||||
    let title: String
 | 
			
		||||
    let themeStr: String
 | 
			
		||||
    let duration: String?
 | 
			
		||||
    let isAdult: Bool
 | 
			
		||||
    let orderType: OrderType
 | 
			
		||||
    let likeCount: Int
 | 
			
		||||
    let commentCount: Int
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										82
									
								
								SodaLive/Sources/MyPage/OrderList/OrderListAllView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,82 @@
 | 
			
		||||
//
 | 
			
		||||
//  OrderListAllView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 2023/08/24.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct OrderListAllView: View {
 | 
			
		||||
    
 | 
			
		||||
    @StateObject var viewModel = OrderListAllViewModel()
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        BaseView(isLoading: $viewModel.isLoading) {
 | 
			
		||||
            VStack(spacing: 0) {
 | 
			
		||||
                HStack(spacing: 0) {
 | 
			
		||||
                    Button {
 | 
			
		||||
                        AppState.shared.back()
 | 
			
		||||
                    } label: {
 | 
			
		||||
                        Image("ic_back")
 | 
			
		||||
                            .resizable()
 | 
			
		||||
                            .frame(width: 20, height: 20)
 | 
			
		||||
                        
 | 
			
		||||
                        Text("구매목록")
 | 
			
		||||
                            .font(.custom(Font.bold.rawValue, size: 18.3))
 | 
			
		||||
                            .foregroundColor(Color(hex: "eeeeee"))
 | 
			
		||||
                    }
 | 
			
		||||
                    
 | 
			
		||||
                    Spacer()
 | 
			
		||||
                }
 | 
			
		||||
                .padding(.horizontal, 13.3)
 | 
			
		||||
                .frame(height: 50)
 | 
			
		||||
                .background(Color.black)
 | 
			
		||||
                
 | 
			
		||||
                ScrollViewReader { reader in
 | 
			
		||||
                    ScrollView(.vertical, showsIndicators: false) {
 | 
			
		||||
                        LazyVStack(spacing: 10.7) {
 | 
			
		||||
                            ScrollerToTop(reader: reader, scrollOnChange: $viewModel.scrollToTop)
 | 
			
		||||
                            
 | 
			
		||||
                            ForEach(0..<viewModel.orderList.count, id: \.self) { index in
 | 
			
		||||
                                let item = viewModel.orderList[index]
 | 
			
		||||
                                OrderListItemView(item: item)
 | 
			
		||||
                                    .contentShape(Rectangle())
 | 
			
		||||
                                    .onTapGesture {
 | 
			
		||||
                                        AppState
 | 
			
		||||
                                            .shared
 | 
			
		||||
                                            .setAppStep(step: .contentDetail(contentId: item.contentId))
 | 
			
		||||
                                    }
 | 
			
		||||
                                    .padding(.horizontal, 13.3)
 | 
			
		||||
                                    .onAppear {
 | 
			
		||||
                                        if index == viewModel.orderList.count - 1 {
 | 
			
		||||
                                            viewModel.getOrderList()
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                .padding(.top, 13.3)
 | 
			
		||||
            }
 | 
			
		||||
            .onAppear {
 | 
			
		||||
                viewModel.getOrderList()
 | 
			
		||||
            }
 | 
			
		||||
            .popup(isPresented: $viewModel.isShowPopup, type: .toast, position: .bottom, autohideIn: 2) {
 | 
			
		||||
                HStack {
 | 
			
		||||
                    Spacer()
 | 
			
		||||
                    Text(viewModel.errorMessage)
 | 
			
		||||
                        .padding(.vertical, 13.3)
 | 
			
		||||
                        .frame(width: screenSize().width - 66.7, alignment: .center)
 | 
			
		||||
                        .font(.custom(Font.medium.rawValue, size: 12))
 | 
			
		||||
                        .background(Color(hex: "9970ff"))
 | 
			
		||||
                        .foregroundColor(Color.white)
 | 
			
		||||
                        .multilineTextAlignment(.leading)
 | 
			
		||||
                        .cornerRadius(20)
 | 
			
		||||
                        .padding(.bottom, 66.7)
 | 
			
		||||
                    Spacer()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,77 @@
 | 
			
		||||
//
 | 
			
		||||
//  OrderListAllViewModel.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 2023/08/24.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import Foundation
 | 
			
		||||
import Combine
 | 
			
		||||
 | 
			
		||||
final class OrderListAllViewModel: ObservableObject {
 | 
			
		||||
    
 | 
			
		||||
    private let repository = ContentRepository()
 | 
			
		||||
    private var subscription = Set<AnyCancellable>()
 | 
			
		||||
    
 | 
			
		||||
    @Published var errorMessage = ""
 | 
			
		||||
    @Published var isShowPopup = false
 | 
			
		||||
    @Published var isLoading = false
 | 
			
		||||
    
 | 
			
		||||
    @Published var orderList = [GetAudioContentOrderListItem]()
 | 
			
		||||
    @Published var scrollToTop = false
 | 
			
		||||
    
 | 
			
		||||
    var page = 1
 | 
			
		||||
    var isLast = false
 | 
			
		||||
    private let pageSize = 10
 | 
			
		||||
    
 | 
			
		||||
    func getOrderList() {
 | 
			
		||||
        if (!isLast && !isLoading) {
 | 
			
		||||
            isLoading = true
 | 
			
		||||
            
 | 
			
		||||
            repository.getOrderList(page: page, size: pageSize)
 | 
			
		||||
                .sink { result in
 | 
			
		||||
                    switch result {
 | 
			
		||||
                    case .finished:
 | 
			
		||||
                        DEBUG_LOG("finish")
 | 
			
		||||
                    case .failure(let error):
 | 
			
		||||
                        ERROR_LOG(error.localizedDescription)
 | 
			
		||||
                    }
 | 
			
		||||
                } receiveValue: { [unowned self] response in
 | 
			
		||||
                    let responseData = response.data
 | 
			
		||||
                    
 | 
			
		||||
                    do {
 | 
			
		||||
                        let jsonDecoder = JSONDecoder()
 | 
			
		||||
                        let decoded = try jsonDecoder.decode(ApiResponse<GetAudioContentOrderListResponse>.self, from: responseData)
 | 
			
		||||
                        
 | 
			
		||||
                        if let data = decoded.data, decoded.success {
 | 
			
		||||
                            if page == 1 {
 | 
			
		||||
                                self.orderList.removeAll()
 | 
			
		||||
                                self.scrollToTop.toggle()
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
                            if !data.items.isEmpty {
 | 
			
		||||
                                page += 1
 | 
			
		||||
                                self.orderList.append(contentsOf: data.items)
 | 
			
		||||
                            } else {
 | 
			
		||||
                                isLast = true
 | 
			
		||||
                            }
 | 
			
		||||
                        } else {
 | 
			
		||||
                            if let message = decoded.message {
 | 
			
		||||
                                self.errorMessage = message
 | 
			
		||||
                            } else {
 | 
			
		||||
                                self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
                            self.isShowPopup = true
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch {
 | 
			
		||||
                        self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
 | 
			
		||||
                        self.isShowPopup = true
 | 
			
		||||
                    }
 | 
			
		||||
                    
 | 
			
		||||
                    self.isLoading = false
 | 
			
		||||
                }
 | 
			
		||||
                .store(in: &subscription)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										88
									
								
								SodaLive/Sources/MyPage/OrderList/OrderListItemView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,88 @@
 | 
			
		||||
//
 | 
			
		||||
//  OrderListItemView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 2023/08/24.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
import Kingfisher
 | 
			
		||||
 | 
			
		||||
struct OrderListItemView: View {
 | 
			
		||||
    
 | 
			
		||||
    let item: GetAudioContentOrderListItem
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        VStack(spacing: 12) {
 | 
			
		||||
            HStack(spacing: 10) {
 | 
			
		||||
                KFImage(URL(string: item.coverImageUrl))
 | 
			
		||||
                    .resizable()
 | 
			
		||||
                    .frame(width: 66.7, height: 66.7, alignment: .center)
 | 
			
		||||
                    .clipped()
 | 
			
		||||
                    .cornerRadius(5.3)
 | 
			
		||||
                
 | 
			
		||||
                VStack(alignment: .leading, spacing: 0) {
 | 
			
		||||
                    HStack(spacing: 8) {
 | 
			
		||||
                        Text(item.themeStr)
 | 
			
		||||
                            .font(.custom(Font.medium.rawValue, size: 8))
 | 
			
		||||
                            .foregroundColor(Color(hex: "3bac6a"))
 | 
			
		||||
                            .padding(2.6)
 | 
			
		||||
                            .background(Color(hex: "28312b"))
 | 
			
		||||
                            .cornerRadius(2.6)
 | 
			
		||||
                        
 | 
			
		||||
                        Text(item.duration!)
 | 
			
		||||
                            .font(.custom(Font.medium.rawValue, size: 8))
 | 
			
		||||
                            .foregroundColor(Color(hex: "777777"))
 | 
			
		||||
                            .padding(2.6)
 | 
			
		||||
                            .background(Color(hex: "222222"))
 | 
			
		||||
                            .cornerRadius(2.6)
 | 
			
		||||
                    }
 | 
			
		||||
                    
 | 
			
		||||
                    Text(item.title)
 | 
			
		||||
                        .font(.custom(Font.medium.rawValue, size: 12))
 | 
			
		||||
                        .foregroundColor(Color(hex: "d2d2d2"))
 | 
			
		||||
                        .fixedSize(horizontal: false, vertical: true)
 | 
			
		||||
                        .padding(.top, 2.6)
 | 
			
		||||
                        .padding(.bottom, 6.7)
 | 
			
		||||
                    
 | 
			
		||||
                    HStack(spacing: 13.3) {
 | 
			
		||||
                        HStack(spacing: 6) {
 | 
			
		||||
                            Image("ic_heart_777")
 | 
			
		||||
                                .resizable()
 | 
			
		||||
                                .frame(width: 13.3, height: 13.3)
 | 
			
		||||
                            
 | 
			
		||||
                            Text("\(item.likeCount)")
 | 
			
		||||
                                .font(.custom(Font.medium.rawValue, size: 10))
 | 
			
		||||
                                .foregroundColor(Color(hex: "777777"))
 | 
			
		||||
                        }
 | 
			
		||||
                        
 | 
			
		||||
                        HStack(spacing: 6) {
 | 
			
		||||
                            Image("ic_message_square_777")
 | 
			
		||||
                                .resizable()
 | 
			
		||||
                                .frame(width: 13.3, height: 13.3)
 | 
			
		||||
                            
 | 
			
		||||
                            Text("\(item.commentCount)")
 | 
			
		||||
                                .font(.custom(Font.medium.rawValue, size: 10))
 | 
			
		||||
                                .foregroundColor(Color(hex: "777777"))
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Spacer()
 | 
			
		||||
                
 | 
			
		||||
                Text(item.orderType == .RENTAL ? "대여중" : "소장중")
 | 
			
		||||
                    .font(.custom(Font.medium.rawValue, size: 10.3))
 | 
			
		||||
                    .foregroundColor(item.orderType == .RENTAL ? .white : .black)
 | 
			
		||||
                    .padding(.horizontal, 5.3)
 | 
			
		||||
                    .padding(.vertical, 2.7)
 | 
			
		||||
                    .background(Color(hex: item.orderType == .RENTAL ? "660fd4" : "b1ef2c"))
 | 
			
		||||
                    .cornerRadius(2.6)
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            Rectangle()
 | 
			
		||||
                .foregroundColor(Color(hex: "595959"))
 | 
			
		||||
                .frame(maxWidth: .infinity)
 | 
			
		||||
                .frame(height: 0.5)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										46
									
								
								SodaLive/Sources/MyPage/OrderList/OrderListView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,46 @@
 | 
			
		||||
//
 | 
			
		||||
//  OrderListView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 2023/08/24.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct OrderListView: View {
 | 
			
		||||
    let items: [GetAudioContentOrderListItem]
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        VStack(spacing: 0) {
 | 
			
		||||
            HStack(spacing: 0) {
 | 
			
		||||
                Text("구매목록")
 | 
			
		||||
                    .font(.custom(Font.bold.rawValue, size: 18))
 | 
			
		||||
                    .foregroundColor(Color(hex: "eeeeee"))
 | 
			
		||||
                
 | 
			
		||||
                Spacer()
 | 
			
		||||
                
 | 
			
		||||
                Text("전체보기")
 | 
			
		||||
                    .font(.custom(Font.medium.rawValue, size: 11))
 | 
			
		||||
                    .foregroundColor(Color(hex: "bbbbbb"))
 | 
			
		||||
                    .onTapGesture {
 | 
			
		||||
                        AppState.shared.setAppStep(step: .orderListAll)
 | 
			
		||||
                    }
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            VStack(spacing: 13.3) {
 | 
			
		||||
                ForEach(0..<items.count, id: \.self) { index in
 | 
			
		||||
                    let item = items[index]
 | 
			
		||||
                    OrderListItemView(item: item)
 | 
			
		||||
                        .contentShape(Rectangle())
 | 
			
		||||
                        .onTapGesture {
 | 
			
		||||
                            AppState
 | 
			
		||||
                                .shared
 | 
			
		||||
                                .setAppStep(step: .contentDetail(contentId: item.contentId))
 | 
			
		||||
                        }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            .padding(.top, 26.7)
 | 
			
		||||
        }
 | 
			
		||||
        .padding(.horizontal, 13.3)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -61,7 +61,11 @@ struct ReservationStatusView_Previews: PreviewProvider {
 | 
			
		||||
                websiteUrl: "",
 | 
			
		||||
                blogUrl: "",
 | 
			
		||||
                liveReservationCount: 0,
 | 
			
		||||
                isAuth: false
 | 
			
		||||
                isAuth: false,
 | 
			
		||||
                orderList: GetAudioContentOrderListResponse(
 | 
			
		||||
                    totalCount: 0,
 | 
			
		||||
                    items: []
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -49,16 +49,15 @@ struct SignUpView: View {
 | 
			
		||||
                                        Image(uiImage: selectedImage)
 | 
			
		||||
                                            .resizable()
 | 
			
		||||
                                            .scaledToFill()
 | 
			
		||||
                                            .frame(width: 80, height: 116.8, alignment: .top)
 | 
			
		||||
                                            .background(Color(hex: "3e3358"))
 | 
			
		||||
                                            .cornerRadius(10)
 | 
			
		||||
                                            .frame(width: 80, height: 80, alignment: .top)
 | 
			
		||||
                                            .clipShape(Circle())
 | 
			
		||||
                                    } else {
 | 
			
		||||
                                        Image("ic_logo")
 | 
			
		||||
                                            .resizable()
 | 
			
		||||
                                            .scaledToFill()
 | 
			
		||||
                                            .frame(width: 80, height: 116.8, alignment: .top)
 | 
			
		||||
                                            .frame(width: 80, height: 80, alignment: .top)
 | 
			
		||||
                                            .background(Color(hex: "3e3358"))
 | 
			
		||||
                                            .cornerRadius(10)
 | 
			
		||||
                                            .clipShape(Circle())
 | 
			
		||||
                                    }
 | 
			
		||||
                                    
 | 
			
		||||
                                    Image("ic_camera")
 | 
			
		||||
 
 | 
			
		||||