@@ -2,6 +2,7 @@ package cmd
22
33import (
44 "github.com/arrow2nd/anct/cmdutil"
5+ "github.com/arrow2nd/anct/gen"
56 "github.com/arrow2nd/anct/view"
67 "github.com/spf13/cobra"
78)
@@ -25,7 +26,10 @@ func (c *Command) newCmdRecord() *cobra.Command {
2526}
2627
2728func (c * Command ) recordRun (cmd * cobra.Command , args []string ) error {
28- episodeIDs := []string {}
29+ var (
30+ work * gen.WorkFragment = nil
31+ episodeIDs = []string {}
32+ )
2933
3034 // ่จ้ฒใใใจใใฝใผใใ้ธๆ
3135 if unwatch , _ := cmd .Flags ().GetBool ("unwatch" ); unwatch {
@@ -36,11 +40,12 @@ func (c *Command) recordRun(cmd *cobra.Command, args []string) error {
3640
3741 episodeIDs = []string {id }
3842 } else {
39- ids , err := c .recordSelectEpisodes (cmd , args )
43+ w , ids , err := c .recordSelectEpisodes (cmd , args )
4044 if err != nil {
4145 return err
4246 }
4347
48+ work = w
4449 episodeIDs = ids
4550 }
4651
@@ -80,22 +85,50 @@ func (c *Command) recordRun(cmd *cobra.Command, args []string) error {
8085 spinner .Stop ()
8186 view .PrintDone (cmd .OutOrStdout (), "Recorded!" )
8287
88+ // ๅใใฆใฎ่ฆ่ดใงใชใใชใใใใง็ตไบ
89+ if work == nil || (work .ViewerStatusState != nil && * work .ViewerStatusState != gen .StatusStateNoState ) {
90+ return nil
91+ }
92+
93+ // ่ฆ่ดในใใผใฟในใฎๅคๆดใ็ขบ่ช
94+ changeStatus , err := view .Confirm ("Change your viewing status to Watching?" )
95+ if err != nil {
96+ return err
97+ }
98+ if ! changeStatus {
99+ view .PrintCanceled (cmd .ErrOrStderr ())
100+ return nil
101+ }
102+
103+ spinner = view .SpinnerStart (cmd .OutOrStdout (), "Updating status" )
104+ if err := c .api .UpdateWorkState (work .ID , gen .StatusStateWatching ); err != nil {
105+ return err
106+ }
107+
108+ spinner .Stop ()
109+ view .PrintDone (cmd .OutOrStdout (), "Updated status!" )
110+
83111 return nil
84112}
85113
86114// recordSelectEpisodes : ๆค็ดข็ตๆใใ่จ้ฒใใใจใใฝใผใใ้ธๆ
87- func (c * Command ) recordSelectEpisodes (cmd * cobra.Command , args []string ) ([]string , error ) {
88- annictID , _ , err := cmdutil .SearchWorks (c .api , cmd , args )
115+ func (c * Command ) recordSelectEpisodes (cmd * cobra.Command , args []string ) (* gen.WorkFragment , []string , error ) {
116+ work , _ , err := cmdutil .SearchWorks (c .api , cmd , args )
117+ if err != nil {
118+ return nil , nil , err
119+ }
120+
121+ episode , err := c .api .FetchWorkEpisodes (work .AnnictID )
89122 if err != nil {
90- return nil , err
123+ return nil , nil , err
91124 }
92125
93- work , err := c . api . FetchWorkEpisodes ( annictID )
126+ ids , err := view . SelectEpisodes ( episode )
94127 if err != nil {
95- return nil , err
128+ return nil , nil , err
96129 }
97130
98- return view . SelectEpisodes ( work )
131+ return work , ids , nil
99132}
100133
101134// recordSelectUnwatchEpisord : ๆช่ฆ่ดใฎใจใใฝใผใใใ้ธๆ
0 commit comments