diff --git a/src/AudioWidget.js b/src/AudioWidget.js deleted file mode 100644 index a1b8937..0000000 --- a/src/AudioWidget.js +++ /dev/null @@ -1,92 +0,0 @@ -import React, { Component } from 'react'; -import load from 'load-script'; - -window.audio_cache = {}; - -function load_amrnb() { - return new Promise((resolve, reject) => { - if (window.AMR) resolve(); - else - load('static/amr_all.min.js', (err) => { - if (err) reject(err); - else resolve(); - }); - }); -} - -export class AudioWidget extends Component { - constructor(props) { - super(props); - this.state = { - url: this.props.src, - state: 'waiting', - data: null, - }; - } - - load() { - if (window.audio_cache[this.state.url]) { - this.setState({ - state: 'loaded', - data: window.audio_cache[this.state.url], - }); - return; - } - - console.log('fetching audio', this.state.url); - this.setState({ - state: 'loading', - }); - Promise.all([fetch(this.state.url), load_amrnb()]).then((res) => { - res[0].blob().then((blob) => { - const reader = new FileReader(); - reader.onload = (event) => { - const raw = new window.AMR().decode(event.target.result); - if (!raw) { - alert('audio decoding failed'); - return; - } - const wave = window.PCMData.encode({ - sampleRate: 8000, - channelCount: 1, - bytesPerSample: 2, - data: raw, - }); - const binary_wave = new Uint8Array(wave.length); - for (let i = 0; i < wave.length; i++) - binary_wave[i] = wave.charCodeAt(i); - - const objurl = URL.createObjectURL( - new Blob([binary_wave], { type: 'audio/wav' }), - ); - window.audio_cache[this.state.url] = objurl; - this.setState({ - state: 'loaded', - data: objurl, - }); - }; - reader.readAsBinaryString(blob); - }); - this.setState({ - state: 'decoding', - }); - }); - } - - render() { - if (this.state.state === 'waiting') - return ( -

- 加载音频 -

- ); - if (this.state.state === 'loading') return

正在下载……

; - else if (this.state.state === 'decoding') return

正在解码……

; - else if (this.state.state === 'loaded') - return ( -

-

- ); - } -} diff --git a/src/infrastructure/appicon/course_survey.png b/src/infrastructure/appicon/course_survey.png deleted file mode 100644 index a2ea2e3..0000000 Binary files a/src/infrastructure/appicon/course_survey.png and /dev/null differ diff --git a/src/infrastructure/appicon/dropdown.png b/src/infrastructure/appicon/dropdown.png deleted file mode 100644 index 0ac094a..0000000 Binary files a/src/infrastructure/appicon/dropdown.png and /dev/null differ diff --git a/src/infrastructure/appicon/dropdown_rev.png b/src/infrastructure/appicon/dropdown_rev.png deleted file mode 100644 index ad14288..0000000 Binary files a/src/infrastructure/appicon/dropdown_rev.png and /dev/null differ diff --git a/src/infrastructure/appicon/hole.png b/src/infrastructure/appicon/hole.png deleted file mode 100644 index 3089e7b..0000000 Binary files a/src/infrastructure/appicon/hole.png and /dev/null differ diff --git a/src/infrastructure/appicon/homepage.png b/src/infrastructure/appicon/homepage.png deleted file mode 100644 index c5cd092..0000000 Binary files a/src/infrastructure/appicon/homepage.png and /dev/null differ diff --git a/src/infrastructure/appicon/imasugu.png b/src/infrastructure/appicon/imasugu.png deleted file mode 100644 index 43c0bd7..0000000 Binary files a/src/infrastructure/appicon/imasugu.png and /dev/null differ diff --git a/src/infrastructure/appicon/imasugu_rev.png b/src/infrastructure/appicon/imasugu_rev.png deleted file mode 100644 index dc2e505..0000000 Binary files a/src/infrastructure/appicon/imasugu_rev.png and /dev/null differ diff --git a/src/infrastructure/appicon/score.png b/src/infrastructure/appicon/score.png deleted file mode 100644 index 105a4c1..0000000 Binary files a/src/infrastructure/appicon/score.png and /dev/null differ diff --git a/src/infrastructure/appicon/syllabus.png b/src/infrastructure/appicon/syllabus.png deleted file mode 100644 index 4ea1557..0000000 Binary files a/src/infrastructure/appicon/syllabus.png and /dev/null differ diff --git a/src/infrastructure/elevator.js b/src/infrastructure/elevator.js deleted file mode 100644 index 0ee93a4..0000000 --- a/src/infrastructure/elevator.js +++ /dev/null @@ -1,47 +0,0 @@ -const DUMP_VER='dump_v1'; - -function dump() { - return JSON.stringify({ - _dump_ver: DUMP_VER, - token: localStorage['TOKEN']||null, - hole_config: localStorage['hole_config']||null, - }); -} -function load(s) { - console.log('elevator: loading',s); - let obj=JSON.parse(s); - if(obj._dump_ver!==DUMP_VER) { - console.error('elevator: loading version mismatch, current',DUMP_VER,'param',obj._dump_ver); - return; - } - if(localStorage['TOKEN']===undefined && obj.token) { - console.log('replace token'); - localStorage['TOKEN']=obj.token; - } - if(localStorage['hole_config']===undefined && obj.hole_config) { - console.log('replace hole config'); - localStorage['hole_config']=obj.hole_config; - } -} - -export function elevate() { - // load - // '?foo=fo&bar=ba' -> [["foo","fo"],["bar","ba"]] - let params=window.location.search.substr(1).split('&').map((kv)=>kv.split('=')); - params.forEach((kv)=>{ - if(kv.length===2 && kv[0]==='_elevator_data') { - load(decodeURIComponent(kv[1])); - let url=new URL(window.location.href); - url.search=''; - window.history.replaceState('','',url.href); - } - }); - - // dump - if(window.location.protocol==='http:' && window.location.hostname==='pkuhelper.pku.edu.cn') { - let url=new URL(window.location.href); - url.protocol='https:'; - url.search='?_elevator_data='+encodeURIComponent(dump()); - window.location.replace(url.href); - } -} \ No newline at end of file diff --git a/src/infrastructure/widgets.js b/src/infrastructure/widgets.js index c73385b..0cc1960 100644 --- a/src/infrastructure/widgets.js +++ b/src/infrastructure/widgets.js @@ -8,15 +8,6 @@ import buildFormatter from 'react-timeago/lib/formatters/buildFormatter'; import './global.css'; import './widgets.css'; -import appicon_hole from './appicon/hole.png'; -import appicon_imasugu from './appicon/imasugu.png'; -import appicon_imasugu_rev from './appicon/imasugu_rev.png'; -import appicon_syllabus from './appicon/syllabus.png'; -import appicon_score from './appicon/score.png'; -import appicon_course_survey from './appicon/course_survey.png'; -import appicon_dropdown from './appicon/dropdown.png'; -import appicon_dropdown_rev from './appicon/dropdown_rev.png'; -import appicon_homepage from './appicon/homepage.png'; import {get_json, API_VERSION_PARAM} from './functions'; function pad2(x) {