diff --git a/app/feed_list.tsx b/app/feed_list.tsx index df8d51d..529a000 100644 --- a/app/feed_list.tsx +++ b/app/feed_list.tsx @@ -1,13 +1,12 @@ import { View, Text, StyleSheet, ScrollView } from 'react-native' import { useEffect, useState } from 'react' import axios from 'axios' -import { useAuthStore } from '../store' +import { useAuthStore, useSubscription } from '../store' const Separator = () => const styles = StyleSheet.create({ separator: { - marginVertical: 8, borderBottomColor: '#cccccc', borderBottomWidth: 1 }, @@ -18,6 +17,10 @@ const styles = StyleSheet.create({ export default function FeedListView() { const { credential } = useAuthStore() + + const { fetch: fetchSubs, subscriptions } = useSubscription() + fetchSubs() + const [entries, setEntries] = useState([]) useEffect(() => { @@ -32,7 +35,7 @@ export default function FeedListView() { const res = await axios.get("https://api.feedbin.com/v2/entries.json", { auth: credential }) const entriesRes = res.data as Entry[] setEntries(entriesRes) - console.log(entries) + console.log(entriesRes[3]) } catch (e) { console.log("`fetchList has an error`") console.log(e) @@ -45,7 +48,7 @@ export default function FeedListView() { entries.map(entry => {entry.title} - {entry.author} + {entry.author && {entry.author} · }{subscriptions[entry.feed_id].title} ) diff --git a/store/index.ts b/store/index.ts index 34051f0..593ca2d 100644 --- a/store/index.ts +++ b/store/index.ts @@ -1,3 +1,4 @@ import useAuthStore from './useAuthStore' +import useSubscription from './useSubscription' -export { useAuthStore } +export { useAuthStore, useSubscription } diff --git a/store/useSubscription.ts b/store/useSubscription.ts new file mode 100644 index 0000000..1f7a946 --- /dev/null +++ b/store/useSubscription.ts @@ -0,0 +1,28 @@ +import { create } from 'zustand' +import axios from 'axios' +import useAuthStore from './useAuthStore' + +type SubState = { + subscriptions: { [key: number]: Subscription } + fetch: () => Promise +} + +export default create(set => ({ + subscriptions: {}, + fetch: async () => { + const credential = useAuthStore.getState().credential + if (!credential) return + try { + const res = await axios.get('https://api.feedbin.com/v2/subscriptions.json', { auth: credential }) + let subs: { [key: number]: Subscription } = {} + for (let i in res.data) { + subs[res.data[i].feed_id] = res.data[i] + } + set({ subscriptions: subs }) + // console.log(subs) + } catch(e) { + console.log("`fetch` (useSubscription) has encounted an error") + console.log(e) + } + } +}))