Skip to content

Commit 2363bcf

Browse files
committed
♻️ [refactor] Task 블럭 내부 self 명시해준 부분을 모두 제거하여 개선
- 불필요하게 weak로 self를 캡쳐하던 부분을 개선함
1 parent 8bbed81 commit 2363bcf

File tree

6 files changed

+50
-71
lines changed

6 files changed

+50
-71
lines changed

Fitfty/Projects/MainFeed/Sources/Main/Address/ViewModel/AddressViewModel.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public final class AddressViewModel {
5555
}
5656

5757
private func search(_ text: String) {
58-
Task { [weak self] in
58+
Task {
5959
do {
6060
let addressList = try await addressRespository.fetchAddressList(search: text)
6161
currentState.send(.isEmpty(addressList.isEmpty))
@@ -64,7 +64,7 @@ public final class AddressViewModel {
6464
]))
6565
} catch {
6666
Logger.debug(error: error, message: "주소 검색 결과 가져오기 실패")
67-
self?.currentState.send(.errorMessage("주소 검색 결과를 가져오다가 알 수 없는 에러가 발생했습니다."))
67+
currentState.send(.errorMessage("주소 검색 결과를 가져오다가 알 수 없는 에러가 발생했습니다."))
6868
}
6969
}
7070
}
@@ -94,13 +94,13 @@ extension AddressViewModel: AddressViewModelInput {
9494

9595
func didTapAddress(_ address: Address) {
9696
currentState.send(.isLoading(true))
97-
Task { [weak self] in
97+
Task {
9898
do {
9999
let weather = try await weatherRepository.fetchWeatherNow(longitude: address.x, latitude: address.y)
100100
currentState.send(.weather(weather: weather, address: address.formatted()))
101101
} catch {
102102
Logger.debug(error: error, message: "현재 날씨 가져오기 실패")
103-
self?.currentState.send(.errorMessage("주소에 해당하는 현재 날씨를 가져오다가 알 수 없는 에러가 발생했습니다."))
103+
currentState.send(.errorMessage("주소에 해당하는 현재 날씨를 가져오다가 알 수 없는 에러가 발생했습니다."))
104104
}
105105
currentState.send(.isLoading(false))
106106
selectedAddress.send(address)

Fitfty/Projects/MainFeed/Sources/Main/Home/ViewModel/CodyCellViewModel.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,9 @@ private extension CodyCellViewModel {
6969
currentState.send(.bookmarkState(false))
7070
return
7171
}
72-
Task { [weak self] in
73-
guard let self = self else {
74-
return
75-
}
72+
Task {
7673
do {
77-
let response = try await fitftyRepository.bookmark(self.isBookmark, boardToken: self.cody.boardToken)
74+
let response = try await fitftyRepository.bookmark(isBookmark, boardToken: cody.boardToken)
7875
if response.result == .fail {
7976
let error = ViewModelError.failure(errorCode: response.errorCode ?? "", message: response.message ?? "")
8077
Logger.debug(error: error, message: "북마크 업데이트 실패")

Fitfty/Projects/MainFeed/Sources/Main/Home/ViewModel/MainViewModel.swift

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ extension MainViewModel: MainViewModelInput {
9494
self?.currentState.send(.isLoading(true))
9595
self?.setUp(longitude: longitude, latitude: latitude)
9696
self?._location.send((longitude, latitude))
97-
}).store(in: &cancellables)
97+
}).store(in: &cancellables)
9898

9999
currentState.sink(receiveValue: { [weak self] state in
100100
switch state {
@@ -133,22 +133,19 @@ extension MainViewModel: MainViewModelInput {
133133

134134
func didTapTag(_ tag: Tag) {
135135
updateTags(tag)
136-
Task { [weak self] in
137-
guard let self = self else {
138-
return
139-
}
136+
Task {
140137
do {
141-
let styles = self._currentStyles.value
142-
let gender = self._currentGender.value ?? .female
143-
let codyList = try await self.getCodyList(gender: gender, styles: styles)
138+
let styles = _currentStyles.value
139+
let gender = _currentGender.value ?? .female
140+
let codyList = try await getCodyList(gender: gender, styles: styles)
144141
currentState.send(.sections([
145-
MainFeedSection(sectionKind: .weather, items: self._weathers),
146-
self.configureTags(styles: styles, gender: gender),
147-
self.configureCodyList(codyList)
142+
MainFeedSection(sectionKind: .weather, items: _weathers),
143+
configureTags(styles: styles, gender: gender),
144+
configureCodyList(codyList)
148145
]))
149146
} catch {
150147
Logger.debug(error: error, message: "코디 목록 가져오기 실패")
151-
self.currentState.send(.errorMessage("코디 목록을 업데이트 하는데 알 수 없는 에러가 발생하여 실패하였습니다."))
148+
currentState.send(.errorMessage("코디 목록을 업데이트 하는데 알 수 없는 에러가 발생하여 실패하였습니다."))
152149
}
153150
}
154151
}
@@ -158,48 +155,42 @@ extension MainViewModel: MainViewModelInput {
158155
private extension MainViewModel {
159156

160157
func setUp(longitude: Double, latitude: Double) {
161-
Task { [weak self] in
162-
guard let self = self else {
163-
return
164-
}
158+
Task {
165159
do {
166-
let address = try await self.getAddress(longitude: longitude, latitude: latitude)
167-
let tags = await self.getTags()
160+
let address = try await getAddress(longitude: longitude, latitude: latitude)
161+
let tags = await getTags()
168162
let gender = tags.0
169163
let styles = tags.1
170-
let weathers = try await self.getWeathers(longitude: longitude, latitude: latitude)
171-
let codyList = try await self.getCodyList(gender: gender, styles: styles)
172-
self.currentState.send(.currentLocation(address))
173-
self.currentState.send(.sections([
174-
self.configureWeathers(weathers),
175-
self.configureTags(styles: styles, gender: gender),
176-
self.configureCodyList(codyList)
164+
let weathers = try await getWeathers(longitude: longitude, latitude: latitude)
165+
let codyList = try await getCodyList(gender: gender, styles: styles)
166+
currentState.send(.currentLocation(address))
167+
currentState.send(.sections([
168+
configureWeathers(weathers),
169+
configureTags(styles: styles, gender: gender),
170+
configureCodyList(codyList)
177171
]))
178172
} catch {
179173
Logger.debug(error: error, message: "사용자 위치 및 날씨, 코디목록 가져오기 실패")
180-
self.currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
174+
currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
181175
}
182176
}
183177
}
184178

185179
func update(longitude: Double, latitude: Double) {
186-
Task { [weak self] in
187-
guard let self = self else {
188-
return
189-
}
180+
Task {
190181
do {
191-
let styles = self._currentStyles.value
192-
let gender = self._currentGender.value ?? .female
193-
let codyList = try await self.getCodyList(gender: gender, styles: styles)
194-
let weathers = try await self.getWeathers(longitude: longitude, latitude: latitude)
195-
self.currentState.send(.sections([
196-
self.configureWeathers(weathers),
197-
self.configureTags(styles: styles, gender: gender),
198-
self.configureCodyList(codyList)
182+
let styles = _currentStyles.value
183+
let gender = _currentGender.value ?? .female
184+
let codyList = try await getCodyList(gender: gender, styles: styles)
185+
let weathers = try await getWeathers(longitude: longitude, latitude: latitude)
186+
currentState.send(.sections([
187+
configureWeathers(weathers),
188+
configureTags(styles: styles, gender: gender),
189+
configureCodyList(codyList)
199190
]))
200191
} catch {
201192
Logger.debug(error: error, message: "사용자 위치 및 날씨, 코디목록 업데이트 실패")
202-
self.currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
193+
currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
203194
}
204195
}
205196
}

Fitfty/Projects/MainFeed/Sources/Main/Home/ViewModel/WeatherInfoHeaderViewModel.swift

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,12 @@ extension WeatherInfoHeaderViewModel: ViewModelType {
6060
private extension WeatherInfoHeaderViewModel {
6161

6262
func getCurrentWeather(longitude: Double, latitude: Double) {
63-
Task { [weak self] in
64-
guard let self = self else {
65-
return
66-
}
63+
Task {
6764
do {
68-
let currentWeather = try await self.weatherRepository.fetchCurrentWeather(
65+
let currentWeather = try await weatherRepository.fetchCurrentWeather(
6966
longitude: longitude.description, latitude: latitude.description
7067
)
71-
self.currentState.send(.currentWeather(currentWeather))
68+
currentState.send(.currentWeather(currentWeather))
7269
} catch {
7370
Logger.debug(error: error, message: "현재 날씨 가져오기 실패")
7471
}

Fitfty/Projects/MainFeed/Sources/Main/Weather/ViewModel/WeatherViewModel.swift

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -125,27 +125,24 @@ extension WeatherViewModel: WeatherViewModelOutput {
125125
private extension WeatherViewModel {
126126

127127
func update(longitude: Double, latitude: Double) {
128-
Task { [weak self] in
129-
guard let self = self else {
130-
return
131-
}
128+
Task {
132129
do {
133-
let address = try await self.getAddress(
130+
let address = try await getAddress(
134131
longitude: longitude,
135132
latitude: latitude
136133
)
137-
self.currentState.send(.currentLocation(address))
138-
self.currentState.send(.sections([
139-
self.configureTodayWeathers(
140-
try await self.getTodayWeathers(longitude: longitude, latitude: latitude)
134+
currentState.send(.currentLocation(address))
135+
currentState.send(.sections([
136+
configureTodayWeathers(
137+
try await getTodayWeathers(longitude: longitude, latitude: latitude)
141138
),
142-
self.configureAnotherDayWeathers(
143-
try await self.getAnotherDayWeathers(longitude: longitude, latitude: latitude)
139+
configureAnotherDayWeathers(
140+
try await getAnotherDayWeathers(longitude: longitude, latitude: latitude)
144141
)
145142
]))
146143
} catch {
147144
Logger.debug(error: error, message: "사용자 위치 및 날씨 가져오기 실패")
148-
self.currentState.send(.errorMessage("현재 위치의 날씨 정보를 가져오는데 알 수 없는 에러가 발생했습니다."))
145+
currentState.send(.errorMessage("현재 위치의 날씨 정보를 가져오는데 알 수 없는 에러가 발생했습니다."))
149146
}
150147
}
151148
}

Fitfty/Projects/MainFeed/Sources/Main/Welcome/ViewModel/WelcomeViewModel.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,11 @@ extension WelcomeViewModel: WelcomeViewModelInput {
4141
var input: WelcomeViewModelInput { self }
4242

4343
func viewDidLoad() {
44-
Task { [weak self] in
45-
guard let self = self else {
46-
return
47-
}
44+
Task {
4845
do {
4946
let response = try await fitftyRepository.fetchMyInfo()
5047
if let data = response.data {
51-
self.currentState.send(.nickName(data.nickname))
48+
currentState.send(.nickName(data.nickname))
5249
} else {
5350
Logger.debug(error: ViewModelError.failure(
5451
errorCode: response.errorCode ?? "", message: response.message ?? ""

0 commit comments

Comments
 (0)