@@ -53,18 +53,93 @@ class EarthquakeHistoryNotifier extends _$EarthquakeHistoryNotifier {
5353 }) async {
5454 ref.invalidate (earthquakeHistoryDetailsProvider);
5555
56- final result = await ref
57- .read (earthquakeHistoryRepositoryProvider)
58- .fetchEarthquakeList (
59- depthGte: param.depthGte,
60- depthLte: param.depthLte,
61- intensityGte: param.intensityGte? .value,
62- intensityLte: param.intensityLte? .value,
63- magnitudeGte: param.magnitudeGte,
64- magnitudeLte: param.magnitudeLte,
65- statuses: param.statuses? .map ((s) => s.name.toUpperCase ()).toList (),
66- limit: limit,
67- );
56+ return _fetchData (param: param, limit: limit, cursor: null );
57+ }
58+
59+ Future <EarthquakeHistoryNotifierState > _fetchData ({
60+ required EarthquakeHistoryParameter param,
61+ required int limit,
62+ required String ? cursor,
63+ }) async {
64+ final repository = ref.read (earthquakeHistoryRepositoryProvider);
65+ final statuses = param.statuses? .map ((s) => s.name.toUpperCase ()).toList ();
66+
67+ // 震央地検索の場合
68+ if (param.hasEpicenterFilter && param.epicenterCode != null ) {
69+ final result = await repository.searchByEpicenter (
70+ code: param.epicenterCode! ,
71+ limit: limit,
72+ cursor: cursor,
73+ depthGte: param.depthGte,
74+ depthLte: param.depthLte,
75+ intensityGte: param.intensityGte? .value,
76+ intensityLte: param.intensityLte? .value,
77+ magnitudeGte: param.magnitudeGte,
78+ magnitudeLte: param.magnitudeLte,
79+ statuses: statuses,
80+ );
81+ return (
82+ items: result.items.map ((e) => e.earthquake).toList (),
83+ nextToken: result.nextToken,
84+ );
85+ }
86+
87+ // 地域検索(都道府県)の場合
88+ if (param.hasRegionFilter &&
89+ param.regionCode != null &&
90+ param.regionSearchType == RegionSearchType .prefecture) {
91+ final result = await repository.searchByPrefecture (
92+ code: param.regionCode! ,
93+ limit: limit,
94+ cursor: cursor,
95+ depthGte: param.depthGte,
96+ depthLte: param.depthLte,
97+ intensityGte: param.regionIntensityGte? .value,
98+ intensityLte: param.regionIntensityLte? .value,
99+ magnitudeGte: param.magnitudeGte,
100+ magnitudeLte: param.magnitudeLte,
101+ statuses: statuses,
102+ );
103+ return (
104+ items: result.items.map ((e) => e.earthquake).toList (),
105+ nextToken: result.nextToken,
106+ );
107+ }
108+
109+ // 地域検索(市区町村)の場合
110+ if (param.hasRegionFilter &&
111+ param.regionCode != null &&
112+ param.regionSearchType == RegionSearchType .city) {
113+ final result = await repository.searchByCity (
114+ code: param.regionCode! ,
115+ limit: limit,
116+ cursor: cursor,
117+ depthGte: param.depthGte,
118+ depthLte: param.depthLte,
119+ intensityGte: param.regionIntensityGte? .value,
120+ intensityLte: param.regionIntensityLte? .value,
121+ magnitudeGte: param.magnitudeGte,
122+ magnitudeLte: param.magnitudeLte,
123+ statuses: statuses,
124+ );
125+ return (
126+ items: result.items.map ((e) => e.earthquake).toList (),
127+ nextToken: result.nextToken,
128+ );
129+ }
130+
131+ // 通常の地震一覧取得
132+ final result = await repository.fetchEarthquakeList (
133+ depthGte: param.depthGte,
134+ depthLte: param.depthLte,
135+ intensityGte: param.intensityGte? .value,
136+ intensityLte: param.intensityLte? .value,
137+ magnitudeGte: param.magnitudeGte,
138+ magnitudeLte: param.magnitudeLte,
139+ statuses: statuses,
140+ limit: limit,
141+ cursor: cursor,
142+ );
68143 return (
69144 items: result.items,
70145 nextToken: result.nextToken,
@@ -94,17 +169,10 @@ class EarthquakeHistoryNotifier extends _$EarthquakeHistoryNotifier {
94169 }
95170
96171 state = await state.guardPlus (() async {
97- final repository = ref.read (earthquakeHistoryRepositoryProvider);
98- final result = await repository.fetchEarthquakeList (
99- depthGte: parameter.depthGte,
100- depthLte: parameter.depthLte,
101- intensityGte: parameter.intensityGte? .value,
102- intensityLte: parameter.intensityLte? .value,
103- magnitudeGte: parameter.magnitudeGte,
104- magnitudeLte: parameter.magnitudeLte,
105- statuses: parameter.statuses? .map ((s) => s.name.toUpperCase ()).toList (),
106- cursor: currentState.nextToken,
172+ final result = await _fetchData (
173+ param: parameter,
107174 limit: 50 ,
175+ cursor: currentState.nextToken,
108176 );
109177 final mergedItems = < EarthquakePartial > [
110178 ...currentState.items,
0 commit comments