diff --git a/packages/app/src/pages/home/[type].jsx b/packages/app/src/pages/home/[type].jsx
new file mode 100755
index 00000000..249102b3
--- /dev/null
+++ b/packages/app/src/pages/home/[type].jsx
@@ -0,0 +1,132 @@
+import React from "react"
+import * as antd from "antd"
+import classnames from "classnames"
+
+import { Icons, createIconRender } from "components/Icons"
+
+import { HashtagTrendings, FeaturedEventsAnnouncements, ConnectedFriends } from "components"
+
+import FeedBrowser from "./components/feed"
+import ExploreBrowser from "./components/explore"
+import LivestreamsBrowser from "./components/livestreams"
+import SavedPostsBrowser from "./components/savedPosts"
+
+import "./index.less"
+
+const Tabs = {
+ "feed": {
+ title: "Feed",
+ icon: "Rss",
+ component: FeedBrowser
+ },
+ "explore": {
+ title: "Explore",
+ icon: "Search",
+ component: ExploreBrowser
+ },
+ "livestreams": {
+ title: "Livestreams",
+ icon: "Tv",
+ component: LivestreamsBrowser
+ },
+ "savedPosts": {
+ title: "Saved posts",
+ icon: "Bookmark",
+ component: SavedPostsBrowser
+ }
+}
+
+export default class Dashboard extends React.Component {
+ state = {
+ activeTab: this.props.match.params.type ?? "feed"
+ }
+
+ primaryPanelRef = React.createRef()
+
+ componentDidMount() {
+ app.eventBus.emit("style.compactMode", false)
+ }
+
+ renderActiveTab() {
+ const tab = Tabs[this.state.activeTab]
+
+ if (!tab) {
+ return
+ }
+
+ return React.createElement(tab.component)
+ }
+
+ handleTabChange = (key) => {
+ if (this.state.activeTab === key) return
+
+ // set to primary panel fade-opacity-leave class
+ this.primaryPanelRef.current.classList.add("fade-opacity-leave")
+
+ setTimeout(() => {
+ this.setState({ activeTab: key })
+ // update location
+ app.history.replace(key)
+ }, 200)
+
+ // remove fade-opacity-leave class after animation
+ setTimeout(() => {
+ this.primaryPanelRef.current.classList.remove("fade-opacity-leave")
+ }, 300)
+ }
+
+ render() {
+ return
+
+
+
+ {this.renderActiveTab()}
+
+
+
+
+
Browse
+
this.handleTabChange(key)}
+ >
+ {Object.keys(Tabs).map((key) => {
+ const tab = Tabs[key]
+
+ return
+ {tab.title}
+
+ })}
+
+
+
+
+
Trendings
+
+
+
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/home/index.jsx b/packages/app/src/pages/home/index.jsx
old mode 100755
new mode 100644
index 156ff6a3..138fffe9
--- a/packages/app/src/pages/home/index.jsx
+++ b/packages/app/src/pages/home/index.jsx
@@ -1,127 +1,7 @@
import React from "react"
-import * as antd from "antd"
-import classnames from "classnames"
-import { Icons, createIconRender } from "components/Icons"
+export default () => {
+ app.setLocation("home/feed")
-import { HashtagTrendings, FeaturedEventsAnnouncements, ConnectedFriends } from "components"
-
-import FeedBrowser from "./components/feed"
-import ExploreBrowser from "./components/explore"
-import LivestreamsBrowser from "./components/livestreams"
-import SavedPostsBrowser from "./components/savedPosts"
-
-import "./index.less"
-
-const Tabs = {
- "feed": {
- title: "Feed",
- icon: "Rss",
- component: FeedBrowser
- },
- "explore": {
- title: "Explore",
- icon: "Search",
- component: ExploreBrowser
- },
- "livestreams": {
- title: "Livestreams",
- icon: "Tv",
- component: LivestreamsBrowser
- },
- "savedPosts": {
- title: "Saved posts",
- icon: "Bookmark",
- component: SavedPostsBrowser
- }
-}
-
-export default class Dashboard extends React.Component {
- state = {
- activeTab: "feed"
- }
-
- primaryPanelRef = React.createRef()
-
- componentDidMount() {
- app.eventBus.emit("style.compactMode", false)
- }
-
- renderActiveTab() {
- const tab = Tabs[this.state.activeTab]
-
- if (!tab) {
- return null
- }
-
- return React.createElement(tab.component)
- }
-
- handleTabChange = (key) => {
- if (this.state.activeTab === key) return
-
- // set to primary panel fade-opacity-leave class
- this.primaryPanelRef.current.classList.add("fade-opacity-leave")
-
-
- setTimeout(() => {
- this.setState({ activeTab: key })
- }, 200)
-
- // remove fade-opacity-leave class after animation
- setTimeout(() => {
- this.primaryPanelRef.current.classList.remove("fade-opacity-leave")
- }, 300)
- }
-
- render() {
- return
-
-
-
- {this.renderActiveTab()}
-
-
-
-
-
Browse
-
this.handleTabChange(key)}
- >
- {Object.keys(Tabs).map((key) => {
- const tab = Tabs[key]
-
- return
- {tab.title}
-
- })}
-
-
-
-
-
Trendings
-
-
-
-
-
-
-
-
- }
+ return <>>
}
\ No newline at end of file