Skip to content

Commit fd2637c

Browse files
committed
Handle mini and mini_preview query to show mini features
1 parent 1c0c06c commit fd2637c

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

src/App.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ import Input from './components/Input'
77
import { FilterContext, FilterType } from './Context'
88
import qrCode from './qr-code.png'
99
import { SHARE_TARGET_PICKER_FIXED_ARGUMENT_LIST } from './constants'
10+
import { FilterTypes } from './FilterTypes'
1011

1112
type Props = {
12-
filter: FilterType;
13-
};
13+
appUrl: string
14+
filter: FilterType
15+
}
1416

15-
function App({ filter }: Props) {
17+
function App({ appUrl, filter }: Props) {
1618
let isLoggedIn = false
1719
try {
1820
isLoggedIn = liff.isLoggedIn()
@@ -24,10 +26,7 @@ function App({ filter }: Props) {
2426
<Header />
2527
<div className={styles.container}>
2628
<div className={styles.liffIdBox}>
27-
<Input
28-
readonly
29-
value={`LIFF URL: https://liff.line.me/${import.meta.env.VITE_LIFF_ID.toString()}`}
30-
/>
29+
<Input readonly value={`URL: ${appUrl}`} />
3130
<img src={qrCode} className={styles.qrCode} />
3231
</div>
3332
<h1>Client APIs</h1>

src/FilterTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export const FilterTypes = {
22
LIFF: 'LIFF',
3-
MINI: 'MINI'
3+
MINI: 'MINI',
4+
MINI_PREVIEW: 'MINI_PREVIEW'
45
} as const

src/main.tsx

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
11
import liff from '@line/liff'
22
import React from 'react'
33
import ReactDOM from 'react-dom'
4+
import { LiffCommonProfilePlugin } from '@line/liff-common-profile-plugin'
45
import './main.css'
56
import App from './App'
67
import { FilterTypes } from './FilterTypes'
78

89
const isMINI = new URLSearchParams(location.search).has('mini')
9-
const filter = isMINI ? FilterTypes.MINI : FilterTypes.LIFF
10-
const liffId = isMINI ? import.meta.env.VITE_LIFF_ID_MINI : import.meta.env.VITE_LIFF_ID
10+
const isPreviewMINI = new URLSearchParams(location.search).has('mini_preview')
11+
12+
const filter = isPreviewMINI
13+
? FilterTypes.MINI_PREVIEW
14+
: isMINI
15+
? FilterTypes.MINI
16+
: FilterTypes.LIFF
17+
18+
const appId = {
19+
[FilterTypes.LIFF]: import.meta.env.VITE_LIFF_ID,
20+
[FilterTypes.MINI]: import.meta.env.VITE_LIFF_ID_MINI,
21+
[FilterTypes.MINI_PREVIEW]: import.meta.env.VITE_LIFF_ID_MINI_PREVIEW
22+
}[filter]
23+
24+
const appUrl =
25+
filter === FilterTypes.LIFF
26+
? `https://liff.line.me/${appId}`
27+
: `https://miniapp.line.me/${appId}`
28+
29+
const injectPlugins = () => {
30+
liff.use(new LiffCommonProfilePlugin())
31+
}
32+
33+
if (filter === FilterTypes.MINI || filter === FilterTypes.MINI_PREVIEW) {
34+
injectPlugins()
35+
}
1136

1237
liff
13-
.init({ liffId })
38+
.init({ liffId: appId })
1439
.then(() => {
1540
ReactDOM.render(
1641
<React.StrictMode>
17-
<App filter={filter} />
42+
<App appUrl={appUrl} filter={filter} />
1843
</React.StrictMode>,
1944
document.getElementById('root')
2045
)

0 commit comments

Comments
 (0)