@@ -59,15 +59,25 @@ struct FeedDetailActions {
59
59
var id : String
60
60
61
61
func execute( in store: Store ) async {
62
+ // Check if user is logged in
63
+ guard AccountState . hasSignIn ( ) else {
64
+ Toast . show ( " 请先登录 " )
65
+ dispatch ( LoginActions . ShowLoginPageAction ( reason: " 需要登录才能收藏主题 " ) )
66
+ return
67
+ }
68
+
62
69
let state = store. appState. feedDetailStates [ id]
63
70
let hadStared = state? . model. headerInfo? . hadStared ?? false
64
71
Toast . show ( hadStared ? " 取消收藏 " : " 收藏中 " )
65
- let once = state? . model. once
72
+ guard let once = state? . model. once else {
73
+ Toast . show ( " 操作失败,请刷新页面 " )
74
+ return
75
+ }
66
76
let headers : Params = Headers . topicReferer ( id)
67
77
68
78
let result : APIResult < FeedDetailInfo > = await APIService . shared
69
79
. htmlGet ( endpoint: hadStared ? . unStarTopic( id: id) : . starTopic( id: id) ,
70
- [ " once " : once! ] ,
80
+ [ " once " : once] ,
71
81
requestHeaders: headers)
72
82
dispatch ( StarTopicDone ( id: id, hadStared: hadStared, result: result) )
73
83
}
@@ -86,12 +96,22 @@ struct FeedDetailActions {
86
96
var id : String
87
97
88
98
func execute( in store: Store ) async {
99
+ // Check if user is logged in
100
+ guard AccountState . hasSignIn ( ) else {
101
+ Toast . show ( " 请先登录 " )
102
+ dispatch ( LoginActions . ShowLoginPageAction ( reason: " 需要登录才能感谢作者 " ) )
103
+ return
104
+ }
105
+
89
106
Toast . show ( " 发送中 " )
90
107
let state = store. appState. feedDetailStates [ id]
91
- let once = state? . model. once
108
+ guard let once = state? . model. once else {
109
+ Toast . show ( " 操作失败,请刷新页面 " )
110
+ return
111
+ }
92
112
93
113
let step1Result : APIResult < SimpleModel > = await APIService . shared
94
- . post ( endpoint: . thanksAuthor( id: id) , [ " once " : once! ] )
114
+ . post ( endpoint: . thanksAuthor( id: id) , [ " once " : once] )
95
115
96
116
var success : Bool = false
97
117
var toast = " 感谢发送失败 "
@@ -116,11 +136,21 @@ struct FeedDetailActions {
116
136
var id : String
117
137
118
138
func execute( in store: Store ) async {
139
+ // Check if user is logged in
140
+ guard AccountState . hasSignIn ( ) else {
141
+ Toast . show ( " 请先登录 " )
142
+ dispatch ( LoginActions . ShowLoginPageAction ( reason: " 需要登录才能忽略主题 " ) )
143
+ return
144
+ }
145
+
119
146
Toast . show ( " 忽略中 " )
120
147
let state = store. appState. feedDetailStates [ id]
121
- let once = state? . model. once
148
+ guard let once = state? . model. once else {
149
+ Toast . show ( " 操作失败,请刷新页面 " )
150
+ return
151
+ }
122
152
let result : APIResult < FeedInfo > = await APIService . shared
123
- . htmlGet ( endpoint: . ignoreTopic( id: id) , [ " once " : once! ] )
153
+ . htmlGet ( endpoint: . ignoreTopic( id: id) , [ " once " : once] )
124
154
var ignored = false
125
155
if case let . success( result) = result {
126
156
ignored = result? . isValid ( ) ?? false
@@ -141,11 +171,22 @@ struct FeedDetailActions {
141
171
var id : String
142
172
143
173
func execute( in store: Store ) async {
174
+ // Check if user is logged in
175
+ guard AccountState . hasSignIn ( ) else {
176
+ Toast . show ( " 请先登录 " )
177
+ dispatch ( LoginActions . ShowLoginPageAction ( reason: " 需要登录才能举报主题 " ) )
178
+ return
179
+ }
180
+
144
181
Toast . show ( " 举报中 " )
145
- let state = store. appState. feedDetailStates [ id] !
182
+ guard let state = store. appState. feedDetailStates [ id] ,
183
+ let reportLink = state. model. reportLink else {
184
+ Toast . show ( " 操作失败,请刷新页面 " )
185
+ return
186
+ }
146
187
147
188
let result : APIResult < DailyInfo > = await APIService . shared
148
- . htmlGet ( endpoint: . general( url: state . model . reportLink! ) ,
189
+ . htmlGet ( endpoint: . general( url: reportLink) ,
149
190
requestHeaders: Headers . TINY_REFERER)
150
191
var reported = false
151
192
if case let . success( result) = result {
@@ -166,10 +207,26 @@ struct FeedDetailActions {
166
207
var id : String
167
208
168
209
func execute( in store: Store ) async {
210
+ // Check if user is logged in
211
+ guard AccountState . hasSignIn ( ) else {
212
+ Toast . show ( " 请先登录 " )
213
+ dispatch ( LoginActions . ShowLoginPageAction ( reason: " 需要登录才能回复主题 " ) )
214
+ return
215
+ }
216
+
169
217
Toast . show ( " 回复中 " )
170
- let state = store. appState. feedDetailStates [ id] !
218
+ guard let state = store. appState. feedDetailStates [ id] else {
219
+ Toast . show ( " 操作失败,请刷新页面 " )
220
+ return
221
+ }
222
+
223
+ guard let once = state. model. once else {
224
+ Toast . show ( " 操作失败,请刷新页面 " )
225
+ return
226
+ }
227
+
171
228
var params : Params = Params ( )
172
- params [ " once " ] = state . model . once
229
+ params [ " once " ] = once
173
230
params [ " content " ] = state. replyContent
174
231
175
232
let result : APIResult < FeedDetailInfo > = await APIService . shared
0 commit comments