parent
							
								
									165c93b248
								
							
						
					
					
						commit
						6ba1035b69
					
				
					 10 changed files with 45 additions and 11 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -8,3 +8,5 @@ npm-debug.log | ||||||
| run.bat | run.bat | ||||||
| api-docs.json | api-docs.json | ||||||
| package-lock.json | package-lock.json | ||||||
|  | version.json | ||||||
|  | /.cache-loader | ||||||
|  |  | ||||||
|  | @ -124,6 +124,7 @@ | ||||||
| 		"gulp-typescript": "3.2.4", | 		"gulp-typescript": "3.2.4", | ||||||
| 		"gulp-uglify": "3.0.0", | 		"gulp-uglify": "3.0.0", | ||||||
| 		"gulp-util": "3.0.8", | 		"gulp-util": "3.0.8", | ||||||
|  | 		"hard-source-webpack-plugin": "^0.6.1", | ||||||
| 		"highlight.js": "9.12.0", | 		"highlight.js": "9.12.0", | ||||||
| 		"html-minifier": "3.5.9", | 		"html-minifier": "3.5.9", | ||||||
| 		"inquirer": "5.1.0", | 		"inquirer": "5.1.0", | ||||||
|  | @ -144,6 +145,7 @@ | ||||||
| 		"node-sass": "^4.7.2", | 		"node-sass": "^4.7.2", | ||||||
| 		"node-sass-json-importer": "^3.1.3", | 		"node-sass-json-importer": "^3.1.3", | ||||||
| 		"nprogress": "0.2.0", | 		"nprogress": "0.2.0", | ||||||
|  | 		"on-build-webpack": "^0.1.0", | ||||||
| 		"os-utils": "0.0.14", | 		"os-utils": "0.0.14", | ||||||
| 		"progress-bar-webpack-plugin": "^1.11.0", | 		"progress-bar-webpack-plugin": "^1.11.0", | ||||||
| 		"prominence": "0.2.0", | 		"prominence": "0.2.0", | ||||||
|  |  | ||||||
|  | @ -2,6 +2,6 @@ | ||||||
|  * Version |  * Version | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| const meta = require('../package.json'); | const meta = require('../version.json'); | ||||||
| 
 | 
 | ||||||
| export default meta.version as string; | export default meta.version as string; | ||||||
|  |  | ||||||
|  | @ -61,11 +61,13 @@ | ||||||
| 		app = isMobile ? 'mobile' : 'desktop'; | 		app = isMobile ? 'mobile' : 'desktop'; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	const ver = localStorage.getItem('v') || VERSION; | ||||||
|  | 
 | ||||||
| 	// Load an app script
 | 	// Load an app script
 | ||||||
| 	// Note: 'async' make it possible to load the script asyncly.
 | 	// Note: 'async' make it possible to load the script asyncly.
 | ||||||
| 	//       'defer' make it possible to run the script when the dom loaded.
 | 	//       'defer' make it possible to run the script when the dom loaded.
 | ||||||
| 	const script = document.createElement('script'); | 	const script = document.createElement('script'); | ||||||
| 	script.setAttribute('src', `/assets/${app}.${VERSION}.${lang}.js`); | 	script.setAttribute('src', `/assets/${app}.${ver}.${lang}.js`); | ||||||
| 	script.setAttribute('async', 'true'); | 	script.setAttribute('async', 'true'); | ||||||
| 	script.setAttribute('defer', 'true'); | 	script.setAttribute('defer', 'true'); | ||||||
| 	head.appendChild(script); | 	head.appendChild(script); | ||||||
|  |  | ||||||
|  | @ -1,11 +1,13 @@ | ||||||
| import MiOS from '../mios'; | import MiOS from '../mios'; | ||||||
| import { version } from '../../config'; | import { version as current } from '../../config'; | ||||||
| 
 | 
 | ||||||
| export default async function(mios: MiOS, force = false, silent = false) { | export default async function(mios: MiOS, force = false, silent = false) { | ||||||
| 	const meta = await mios.getMeta(force); | 	const meta = await mios.getMeta(force); | ||||||
|  | 	const newer = meta.version; | ||||||
| 
 | 
 | ||||||
| 	if (meta.version != version) { | 	if (newer != current) { | ||||||
| 		localStorage.setItem('should-refresh', 'true'); | 		localStorage.setItem('should-refresh', 'true'); | ||||||
|  | 		localStorage.setItem('v', newer); | ||||||
| 
 | 
 | ||||||
| 		// Clear cache (serive worker)
 | 		// Clear cache (serive worker)
 | ||||||
| 		try { | 		try { | ||||||
|  | @ -21,10 +23,10 @@ export default async function(mios: MiOS, force = false, silent = false) { | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (!silent) { | 		if (!silent) { | ||||||
| 			alert('%i18n:common.update-available%'.replace('{newer}', meta.version).replace('{current}', version)); | 			alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return meta.version; | 		return newer; | ||||||
| 	} else { | 	} else { | ||||||
| 		return null; | 		return null; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -86,6 +86,7 @@ export default Vue.extend({ | ||||||
| <style lang="stylus" scoped> | <style lang="stylus" scoped> | ||||||
| .mk-switch | .mk-switch | ||||||
| 	display flex | 	display flex | ||||||
|  | 	margin 8px 0 | ||||||
| 	cursor pointer | 	cursor pointer | ||||||
| 	transition all 0.3s | 	transition all 0.3s | ||||||
| 
 | 
 | ||||||
|  | @ -134,7 +135,9 @@ export default Vue.extend({ | ||||||
| 		display inline-block | 		display inline-block | ||||||
| 		margin 0 | 		margin 0 | ||||||
| 		width 40px | 		width 40px | ||||||
|  | 		min-width 40px | ||||||
| 		height 20px | 		height 20px | ||||||
|  | 		min-height 20px | ||||||
| 		background #dcdfe6 | 		background #dcdfe6 | ||||||
| 		border 1px solid #dcdfe6 | 		border 1px solid #dcdfe6 | ||||||
| 		outline none | 		outline none | ||||||
|  | @ -154,17 +157,18 @@ export default Vue.extend({ | ||||||
| 	> .label | 	> .label | ||||||
| 		margin-left 8px | 		margin-left 8px | ||||||
| 		display block | 		display block | ||||||
| 		font-size 14px |  | ||||||
| 		cursor pointer | 		cursor pointer | ||||||
| 		transition inherit | 		transition inherit | ||||||
| 
 | 
 | ||||||
| 		> span | 		> span | ||||||
|  | 			display block | ||||||
| 			line-height 20px | 			line-height 20px | ||||||
| 			color #4a535a | 			color #4a535a | ||||||
| 			transition inherit | 			transition inherit | ||||||
| 
 | 
 | ||||||
| 		> p | 		> p | ||||||
| 			margin 0 | 			margin 0 | ||||||
|  | 			font-size 90% | ||||||
| 			color #9daab3 | 			color #9daab3 | ||||||
| 
 | 
 | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -94,6 +94,9 @@ | ||||||
| 			<mk-switch v-model="debug" text="デバッグモードを有効にする"> | 			<mk-switch v-model="debug" text="デバッグモードを有効にする"> | ||||||
| 				<span>この設定はアカウントに保存されません。</span> | 				<span>この設定はアカウントに保存されません。</span> | ||||||
| 			</mk-switch> | 			</mk-switch> | ||||||
|  | 			<mk-switch v-model="enableExperimental" text="実験的機能を有効にする"> | ||||||
|  | 				<span>この設定はアカウントに保存されません。実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。</span> | ||||||
|  | 			</mk-switch> | ||||||
| 		</section> | 		</section> | ||||||
| 
 | 
 | ||||||
| 		<section class="other" v-show="page == 'other'"> | 		<section class="other" v-show="page == 'other'"> | ||||||
|  | @ -126,17 +129,22 @@ export default Vue.extend({ | ||||||
| 	data() { | 	data() { | ||||||
| 		return { | 		return { | ||||||
| 			page: 'profile', | 			page: 'profile', | ||||||
|  | 			meta: null, | ||||||
| 			license, | 			license, | ||||||
| 			version, | 			version, | ||||||
| 			latestVersion: undefined, | 			latestVersion: undefined, | ||||||
| 			checkingForUpdate: false, | 			checkingForUpdate: false, | ||||||
| 			showPostFormOnTopOfTl: false, | 			showPostFormOnTopOfTl: false, | ||||||
| 			debug: localStorage.getItem('debug') == 'true' | 			debug: localStorage.getItem('debug') == 'true', | ||||||
|  | 			enableExperimental: localStorage.getItem('enableExperimental') == 'true' | ||||||
| 		}; | 		}; | ||||||
| 	}, | 	}, | ||||||
| 	watch: { | 	watch: { | ||||||
| 		debug() { | 		debug() { | ||||||
| 			localStorage.setItem('debug', this.debug ? 'true' : 'false'); | 			localStorage.setItem('debug', this.debug ? 'true' : 'false'); | ||||||
|  | 		}, | ||||||
|  | 		enableExperimental() { | ||||||
|  | 			localStorage.setItem('enableExperimental', this.enableExperimental ? 'true' : 'false'); | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	computed: { | 	computed: { | ||||||
|  | @ -145,6 +153,7 @@ export default Vue.extend({ | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	created() { | 	created() { | ||||||
|  | 		this.meta = (this as any).os.getMeta(); | ||||||
| 		this.showPostFormOnTopOfTl = (this as any).os.i.client_settings.showPostFormOnTopOfTl; | 		this.showPostFormOnTopOfTl = (this as any).os.i.client_settings.showPostFormOnTopOfTl; | ||||||
| 	}, | 	}, | ||||||
| 	methods: { | 	methods: { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,9 @@ | ||||||
| 
 | 
 | ||||||
| import * as webpack from 'webpack'; | import * as webpack from 'webpack'; | ||||||
| 
 | 
 | ||||||
| import version from '../../src/version'; | const meta = require('../../package.json'); | ||||||
|  | const version = meta.version; | ||||||
|  | 
 | ||||||
| const constants = require('../../src/const.json'); | const constants = require('../../src/const.json'); | ||||||
| import config from '../../src/conf'; | import config from '../../src/conf'; | ||||||
| import { licenseHtml } from '../../src/common/build/license'; | import { licenseHtml } from '../../src/common/build/license'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,7 @@ | ||||||
|  | import * as fs from 'fs'; | ||||||
| import * as webpack from 'webpack'; | import * as webpack from 'webpack'; | ||||||
|  | const WebpackOnBuildPlugin = require('on-build-webpack'); | ||||||
|  | const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); | ||||||
| const ProgressBarPlugin = require('progress-bar-webpack-plugin'); | const ProgressBarPlugin = require('progress-bar-webpack-plugin'); | ||||||
| import chalk from 'chalk'; | import chalk from 'chalk'; | ||||||
| 
 | 
 | ||||||
|  | @ -11,6 +14,7 @@ const isProduction = env === 'production'; | ||||||
| 
 | 
 | ||||||
| export default (version, lang) => { | export default (version, lang) => { | ||||||
| 	const plugins = [ | 	const plugins = [ | ||||||
|  | 		new HardSourceWebpackPlugin(), | ||||||
| 		new ProgressBarPlugin({ | 		new ProgressBarPlugin({ | ||||||
| 			format: chalk`  {cyan.bold yes we can} {bold [}:bar{bold ]} {green.bold :percent} {gray (:current/:total)} :elapseds`, | 			format: chalk`  {cyan.bold yes we can} {bold [}:bar{bold ]} {green.bold :percent} {gray (:current/:total)} :elapseds`, | ||||||
| 			clear: false | 			clear: false | ||||||
|  | @ -20,6 +24,11 @@ export default (version, lang) => { | ||||||
| 			'process.env': { | 			'process.env': { | ||||||
| 				NODE_ENV: JSON.stringify(process.env.NODE_ENV) | 				NODE_ENV: JSON.stringify(process.env.NODE_ENV) | ||||||
| 			} | 			} | ||||||
|  | 		}), | ||||||
|  | 		new WebpackOnBuildPlugin(stats => { | ||||||
|  | 			fs.writeFileSync('./version.json', JSON.stringify({ | ||||||
|  | 				version | ||||||
|  | 			}), 'utf-8'); | ||||||
| 		}) | 		}) | ||||||
| 	]; | 	]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -12,7 +12,8 @@ const constants = require('../src/const.json'); | ||||||
| import plugins from './plugins'; | import plugins from './plugins'; | ||||||
| 
 | 
 | ||||||
| import langs from '../locales'; | import langs from '../locales'; | ||||||
| import version from '../src/version'; | const meta = require('../package.json'); | ||||||
|  | const version = meta.version; | ||||||
| 
 | 
 | ||||||
| global['faReplacement'] = faReplacement; | global['faReplacement'] = faReplacement; | ||||||
| 
 | 
 | ||||||
|  | @ -59,7 +60,7 @@ module.exports = Object.keys(langs).map(lang => { | ||||||
| 			rules: [{ | 			rules: [{ | ||||||
| 				test: /\.vue$/, | 				test: /\.vue$/, | ||||||
| 				exclude: /node_modules/, | 				exclude: /node_modules/, | ||||||
| 				use: [/*'cache-loader', */{ | 				use: ['cache-loader', { | ||||||
| 					loader: 'vue-loader', | 					loader: 'vue-loader', | ||||||
| 					options: { | 					options: { | ||||||
| 						cssSourceMap: false, | 						cssSourceMap: false, | ||||||
|  | @ -140,6 +141,7 @@ module.exports = Object.keys(langs).map(lang => { | ||||||
| 				use: [{ | 				use: [{ | ||||||
| 					loader: 'ts-loader', | 					loader: 'ts-loader', | ||||||
| 					options: { | 					options: { | ||||||
|  | 						happyPackMode: true, | ||||||
| 						configFile: __dirname + '/../src/web/app/tsconfig.json', | 						configFile: __dirname + '/../src/web/app/tsconfig.json', | ||||||
| 						appendTsSuffixTo: [/\.vue$/] | 						appendTsSuffixTo: [/\.vue$/] | ||||||
| 					} | 					} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue