1- import { createEffect } from "solid-js" ;
1+ import { createEffect , createSignal } from "solid-js" ;
22import { useStore } from "../store" ;
33import NavLink from "./NavLink" ;
44import ArticleList from "./ArticleList" ;
55
66const qsParse = ( ) => "" ;
77
88export default ( ) => {
9- const [ CommonStore , UserStore , ArticlesStore ] = useStore (
9+ const [ CommonStore , UserStore , ArticlesStore , { location } ] = useStore (
1010 "common" ,
1111 "user" ,
12- "articles"
12+ "articles" ,
13+ "router"
1314 ) ,
14- getTab = ( ) => qsParse ( window . location . search ) . tab || "all" ,
15- getTag = ( ) => qsParse ( window . location . search ) . tag || "" ,
15+ [ tab , setTab ] = createSignal ( CommonStore . state . token ? "feed" : "all" ) ,
1616 getPredicate = ( ) => {
17- switch ( getTab ( ) ) {
17+ switch ( tab ( ) ) {
1818 case "feed" :
1919 return { myFeed : true } ;
20- case "tag" :
21- return { tag : qsParse ( window . location . search ) . tag } ;
22- default :
20+ case "all" :
2321 return { } ;
22+ default :
23+ return { tag : tab ( ) } ;
2424 }
2525 } ,
26- handleTabChange = tab => {
27- if ( props . location . query . tab === tab ) return ;
28- props . router . push ( { ...props . location , query : { tab } } ) ;
29- } ,
3026 handleSetPage = page => {
3127 ArticlesStore . setPage ( page ) ;
3228 ArticlesStore . loadArticles ( ) ;
3329 } ;
3430
3531 createEffect ( ( ) => {
36- // if (
37- // getTab(props) !== getTab(previousProps) ||
38- // getTag(props) !== getTag(previousProps)
39- // ) {
32+ const search = location ( ) . split ( "?" ) [ 1 ] ;
33+ if ( ! search ) return setTab ( "all" ) ;
34+ const query = new URLSearchParams ( search ) ;
35+ setTab ( query . get ( "tab" ) ) ;
36+ } ) ;
37+ createEffect ( ( ) => {
4038 ArticlesStore . setPredicate ( getPredicate ( ) ) ;
4139 ArticlesStore . loadArticles ( ) ;
42- // }
4340 } ) ;
41+ CommonStore . loadTags ( ) ;
4442
4543 return (
4644 < div class = "home-page" >
@@ -60,23 +58,31 @@ export default () => {
6058 < ul class = "nav nav-pills outline-active" >
6159 < Show when = { UserStore . state . currentUser } >
6260 < li class = "nav-item" >
63- < NavLink class = "nav-link" route = "?tab=feed" >
61+ < NavLink
62+ class = "nav-link"
63+ href = "?tab=feed"
64+ active = { tab ( ) === "feed" }
65+ >
6466 Your Feed
6567 </ NavLink >
6668 </ li >
6769 </ Show >
6870 < li class = "nav-item" >
69- < NavLink class = "nav-link" route = "?tab=all" >
71+ < NavLink
72+ class = "nav-link"
73+ href = "?tab=all"
74+ active = { tab ( ) === "all" }
75+ >
7076 Global Feed
7177 </ NavLink >
7278 </ li >
73- { /* <Show when={props.tag }>
79+ < Show when = { tab ( ) !== "all" && tab ( ) !== "feed" } >
7480 < li className = "nav-item" >
7581 < a href = "" className = "nav-link active" >
76- <i className="ion-pound" /> {props.tag }
82+ < i className = "ion-pound" /> { tab ( ) }
7783 </ a >
7884 </ li >
79- </Show> */ }
85+ </ Show >
8086 </ ul >
8187 </ div >
8288
@@ -96,10 +102,7 @@ export default () => {
96102 < div class = "tag-list" >
97103 < For each = { CommonStore . state . tags } >
98104 { tag => (
99- < a
100- href = { `#/?tab=tag&tag=${ tag } ` }
101- class = "tag-pill tag-default"
102- >
105+ < a href = { `#/?tab=${ tag } ` } class = "tag-pill tag-default" >
103106 { tag }
104107 </ a >
105108 ) }
0 commit comments