diff --git a/packages/app/src/pages/@mobile-views/player/index.jsx b/packages/app/src/pages/@mobile-views/player/index.jsx
new file mode 100644
index 00000000..27ac6896
--- /dev/null
+++ b/packages/app/src/pages/@mobile-views/player/index.jsx
@@ -0,0 +1,12 @@
+import React from "react"
+import MediaPlayer from "components/Player/MediaPlayer"
+
+import "./index.less"
+
+export default () => {
+ return
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/@mobile-views/player/index.less b/packages/app/src/pages/@mobile-views/player/index.less
new file mode 100644
index 00000000..d58f797c
--- /dev/null
+++ b/packages/app/src/pages/@mobile-views/player/index.less
@@ -0,0 +1,8 @@
+.__mobile-player-view {
+ display: flex;
+
+ flex-direction: column;
+
+ height: 100%;
+ width: 100%;
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/account/index.jsx b/packages/app/src/pages/account/index.jsx
index 9b5c191c..ed667519 100755
--- a/packages/app/src/pages/account/index.jsx
+++ b/packages/app/src/pages/account/index.jsx
@@ -258,7 +258,7 @@ export default class Account extends React.Component {
this.handlePageTransition(e.key)}
>
diff --git a/packages/app/src/pages/index.mobile.jsx b/packages/app/src/pages/index.mobile.jsx
new file mode 100644
index 00000000..13b302c7
--- /dev/null
+++ b/packages/app/src/pages/index.mobile.jsx
@@ -0,0 +1,35 @@
+import React from "react"
+import * as antd from "antd"
+import { Translation } from "react-i18next"
+
+import { PagePanelWithNavMenu } from "components/PagePanels"
+
+import { Icons } from "components/Icons"
+
+import Tabs from "./home/tabs"
+
+export default class Home extends React.Component {
+ render() {
+ const navMenuHeader = <>
+
+
+ {(t) => t("Timeline")}
+
+
+
+ {(t) => t("Create")}
+
+ >
+
+ return
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/login/index.jsx b/packages/app/src/pages/login/index.jsx
index 8b6d5ea2..0b9eab75 100755
--- a/packages/app/src/pages/login/index.jsx
+++ b/packages/app/src/pages/login/index.jsx
@@ -75,7 +75,7 @@ export default (props) => {
-

+
{
diff --git a/packages/app/src/pages/login/index.mobile.jsx b/packages/app/src/pages/login/index.mobile.jsx
index 97116dbb..2cc46086 100755
--- a/packages/app/src/pages/login/index.mobile.jsx
+++ b/packages/app/src/pages/login/index.mobile.jsx
@@ -1,12 +1,15 @@
import React from "react"
-import "./index.less"
+import "./index.mobile.less"
export default (props) => {
const [wallpaperData, setWallpaperData] = React.useState(null)
const setRandomWallpaper = async () => {
- const featuredWallpapers = await app.cores.api.request("main", "get", "featuredWallpapers").catch((err) => {
+ const { data: featuredWallpapers } = await app.cores.api.customRequest({
+ method: "GET",
+ url: "/featured_wallpapers"
+ }).catch((err) => {
console.error(err)
return []
})
@@ -19,12 +22,12 @@ export default (props) => {
React.useEffect(() => {
if (app.userData) {
- return app.goMain()
+ return app.navigation.goMain()
}
setRandomWallpaper()
- app.eventBus.emit("app.createLogin", {
+ app.controls.openLoginForm({
defaultLocked: true,
})
}, [])
@@ -36,9 +39,9 @@ export default (props) => {
}}
className="wallpaper"
>
-
+ {/*
{wallpaperData?.author ? wallpaperData.author : null}
-
+ */}
}
\ No newline at end of file
diff --git a/packages/app/src/pages/login/index.mobile.less b/packages/app/src/pages/login/index.mobile.less
new file mode 100644
index 00000000..b05a5d18
--- /dev/null
+++ b/packages/app/src/pages/login/index.mobile.less
@@ -0,0 +1,22 @@
+.loginPage {
+ position: relative;
+
+ width: 100%;
+ height: 100vh;
+ height: 100dvh;
+
+ .wallpaper {
+ position: absolute;
+
+ top: 0;
+ left: 0;
+
+ width: 100%;
+ height: 100vh;
+ height: 100dvh;
+
+ background-position: center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/lyrics/index.jsx b/packages/app/src/pages/lyrics/index.jsx
index 5777fa3b..b8cf7da3 100644
--- a/packages/app/src/pages/lyrics/index.jsx
+++ b/packages/app/src/pages/lyrics/index.jsx
@@ -601,10 +601,16 @@ export default class SyncLyrics extends React.Component {
colorAnalysis,
})
- app.SidebarController.toggleVisibility(false)
+ if (app.SidebarController) {
+ app.SidebarController.toggleVisibility(false)
+ }
+
+ if (app.layout.floatingStack) {
+ app.layout.floatingStack.toogleGlobalVisibility(false)
+ }
+
app.cores.style.compactMode(true)
app.cores.style.applyVariant("dark")
- app.layout.floatingStack.toogleGlobalVisibility(false)
// request full screen to browser
if (document.fullscreenEnabled) {
@@ -640,10 +646,16 @@ export default class SyncLyrics extends React.Component {
delete window._hacks
- app.SidebarController.toggleVisibility(true)
+ if (app.SidebarController) {
+ app.SidebarController.toggleVisibility(true)
+ }
+
+ if (app.layout.floatingStack) {
+ app.layout.floatingStack.toogleGlobalVisibility(true)
+ }
+
app.cores.style.compactMode(false)
app.cores.style.applyInitialVariant()
- app.layout.floatingStack.toogleGlobalVisibility(true)
// exit full screen
if (document.fullscreenEnabled) {
diff --git a/packages/app/src/pages/music/creator/index.jsx b/packages/app/src/pages/music/creator/index.jsx
index c86d7ccd..0f8a7102 100755
--- a/packages/app/src/pages/music/creator/index.jsx
+++ b/packages/app/src/pages/music/creator/index.jsx
@@ -279,7 +279,9 @@ export default class PlaylistCreatorSteps extends React.Component {
okType: "danger",
cancelText: "Cancel",
onOk: async () => {
- const result = await PlaylistModel.deletePlaylist(this.props.playlist_id)
+ const result = await PlaylistModel.deletePlaylist(this.props.playlist_id, {
+ remove_with_tracks: true
+ })
if (result) {
app.message.success("Playlist deleted")
diff --git a/packages/app/src/pages/play/[play_id].jsx b/packages/app/src/pages/play/[play_id].jsx
index 122782f8..b720fd1a 100755
--- a/packages/app/src/pages/play/[play_id].jsx
+++ b/packages/app/src/pages/play/[play_id].jsx
@@ -105,7 +105,7 @@ export default (props) => {
return
diff --git a/packages/app/src/pages/play/index.less b/packages/app/src/pages/play/index.less
index 82de831e..c4a31764 100755
--- a/packages/app/src/pages/play/index.less
+++ b/packages/app/src/pages/play/index.less
@@ -1,4 +1,4 @@
-.play {
+.playlist_view {
display: grid;
grid-template-columns: 30vw 1fr;
@@ -54,15 +54,12 @@
background-color: black;
border-radius: 12px;
-
overflow: hidden;
img {
width: 100%;
height: 100%;
- border-radius: 12px;
-
object-fit: cover;
}
}
diff --git a/packages/app/src/pages/settings/index.jsx b/packages/app/src/pages/settings/index.jsx
index f3d57117..3f216d92 100755
--- a/packages/app/src/pages/settings/index.jsx
+++ b/packages/app/src/pages/settings/index.jsx
@@ -591,7 +591,7 @@ export default () => {
className={classnames(
"settings_wrapper",
{
- ["mobile"]: window.isMobile,
+ ["mobile"]: app.isMobile,
}
)}
>
diff --git a/packages/app/src/router.jsx b/packages/app/src/router.jsx
index f09ce3f8..2cdac8a0 100755
--- a/packages/app/src/router.jsx
+++ b/packages/app/src/router.jsx
@@ -46,7 +46,7 @@ const mobileRoutes = Object.keys(pathsMobile).map((route) => {
return {
path,
- element: pathsMobile[path]
+ element: pathsMobile[route]
}
})
@@ -192,13 +192,11 @@ export const PageRender = React.memo((props) => {
return
{
routes.map((route, index) => {
- let Element = route.element
+ if (app.isMobile) {
+ const mobileRoute = mobileRoutes.find((r) => r.path === route.path)
- if (window.isMobile) {
- const mobileElement = mobileRoutes.find((r) => r.path === route.path)
-
- if (mobileElement) {
- Element = mobileElement
+ if (mobileRoute) {
+ route = mobileRoute
}
}
diff --git a/packages/app/src/theme/animations.less b/packages/app/src/theme/animations.less
index b5fb0386..2fc35b5c 100755
--- a/packages/app/src/theme/animations.less
+++ b/packages/app/src/theme/animations.less
@@ -93,4 +93,23 @@
to {
opacity: 0;
}
+}
+
+@keyframes bounce {
+
+ 0%,
+ 20%,
+ 50%,
+ 80%,
+ 100% {
+ transform: translateY(0);
+ }
+
+ 40% {
+ transform: translateY(-5px);
+ }
+
+ 60% {
+ transform: translateY(-3px);
+ }
}
\ No newline at end of file
diff --git a/packages/app/src/theme/mobile.less b/packages/app/src/theme/mobile.less
index 70b66f9a..3c82c70a 100755
--- a/packages/app/src/theme/mobile.less
+++ b/packages/app/src/theme/mobile.less
@@ -10,8 +10,10 @@
.content_wrapper {
height: 100%;
width: 100%;
+
overflow-y: scroll;
- padding-top: 20px;
+
+ //padding-top: 20px;
}
.content_layout {
@@ -22,142 +24,139 @@
align-items: center;
justify-content: center;
- width: 100vw;
- padding: 0 10px;
+ width: 100%;
+ padding: 7px;
+
+ box-sizing: border-box;
}
- .frameDecorator {
- position: absolute;
- left: 0;
-
- z-index: 8000;
-
- width: 100vw;
- height: @app_frameDecorator_height;
-
- background-color: rgba(var(--layoutBackgroundColor), 0.8);
-
- filter: blur(4px);
- backdrop-filter: blur(10px);
-
- &.top {
- top: 0;
- transform: translate(0, -6px);
- }
-
- &.bottom {
- bottom: 0;
- transform: translate(0, 6px);
- }
- }
-
- // FIXMETS FOR MOBILE LAYOUT
- .loginPage {
- flex-direction: column;
-
- .wallpaper {
- width: 100vw;
- }
- }
-
- .dashboard {
- display: flex;
- flex-direction: column;
- }
-
- .postPage {
+ .playlist_view {
display: flex;
flex-direction: column;
- height: 90vh;
+ .play_info_wrapper {
+ position: relative;
- .postCard {
- &.fullmode {
- .wrapper {
- height: 76vh;
+ .play_info {
+ width: 100%;
- .post_content {
- .post_attachments {
- height: 60vh;
- overflow: hidden;
+ .play_info_cover {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
- .carousel-root {
- .carousel {
- min-height: 200px;
+ .list {
+ padding: 30px 10px;
+ }
+ }
- >div {
- display: flex;
- align-items: center;
- height: 100%;
- }
- }
- }
+ .pagePanels {
+ display: flex;
+ flex-direction: column;
+
+ align-items: center;
+ justify-content: center;
+
+ overflow-x: visible;
+
+ width: 100%;
+ height: 100%;
+
+ .panel {
+ width: 100%;
+ //height: 100%;
+
+ &.left {
+ z-index: 500;
+ overflow: visible;
+ overflow-x: visible;
+ }
+
+ &.right {
+ z-index: 400;
+
+ overflow-x: visible;
+ }
+ }
+
+ .card {
+ width: 100%;
+ height: 100%;
+
+ display: flex;
+ flex-direction: row;
+
+ padding: 5px;
+
+ justify-content: space-between;
+
+ box-shadow: @card-shadow;
+
+ border-radius: 12px;
+
+ isolation: unset;
+ overflow: visible;
+
+ .item {
+ display: flex;
+ flex-direction: column;
+
+ justify-content: center;
+ align-items: center;
+
+ padding: 5px 10px;
+
+ border-radius: 8px;
+
+ .icon {
+ svg {
+ margin: 0 !important;
+ font-size: 1rem;
+ }
+ }
+
+ .label {
+ font-size: 0.6rem;
+ }
+
+ &.active {
+ .icon {
+ svg {
+ color: var(--colorPrimary);
+ }
+ }
+
+ .label {
+ color: var(--colorPrimary);
+ }
+
+ background-color: var(--background-color-primary);
+ }
+ }
+ }
+ }
+
+ .post-list_wrapper {
+ .post-list {
+ padding-top: 10px;
+ border-radius: 0;
+
+ .playlistTimelineEntry {
+ width: 100%;
+
+ .playlistTimelineEntry_content {
+ .playlistTimelineEntry_thumbnail {
+ img {
+ width: 20vw;
+ height: 20vw;
}
}
}
}
- }
- }
- .accountProfile {
- padding: 0;
-
- .contents {
- display: flex;
- flex-direction: column;
-
- padding: 0;
-
- margin-top: -4.0vh;
-
- padding: 0;
-
- .tabContent {
- padding: 0;
- padding-top: 26px;
- }
-
- .tabMenuWrapper {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-
- width: 100%;
-
- margin: 0;
-
- .ant-menu {
- padding: 0;
- margin: 0;
- }
- }
- }
- }
-
- .liveStream {
- flex-direction: column;
-
- .plyr {
- position: absolute;
-
- top: 0;
- left: 0;
-
- width: 100%;
- height: 60vh;
-
- border-radius: 6px;
- }
-
- .panel {
- height: 40vh;
- }
- }
-
- .postCard {
- .post_actionsWrapper {
- .actions {
+ .postCard {
width: 100%;
}
}