タイトルやアイコンがきちんと設定されないことがあるのを修正 (#5265)

* Fix: og:site_nameがbase系ページに正しく反映さんれない

* instanceNameはAPIのmetaじゃなくてog:site_nameを参照するように

* Fix: タイトルが変更されるページから通常ページに遷移してもタイトルが戻らない

* Fix: タイトルが戻らない mobile / notifications

* Fix: faviconの変更が効かないページがある
This commit is contained in:
MeiMei 2019-08-16 14:16:19 +09:00 committed by syuilo
parent 7dd193636c
commit ed8b073e54
11 changed files with 39 additions and 4 deletions

View file

@ -143,7 +143,11 @@ export default Vue.extend({
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.meta = meta; this.meta = meta;
}); });
} },
mounted() {
document.title = this.$root.instanceName;
},
}); });
</script> </script>

View file

@ -40,5 +40,9 @@ export default Vue.extend({
icon: faStar icon: faStar
}); });
}, },
mounted() {
document.title = this.$root.instanceName;
},
}); });
</script> </script>

View file

@ -40,5 +40,9 @@ export default Vue.extend({
icon: faNewspaper icon: faNewspaper
}); });
}, },
mounted() {
document.title = this.$root.instanceName;
},
}); });
</script> </script>

View file

@ -52,6 +52,9 @@ export default Vue.extend({
icon: faStickyNote icon: faStickyNote
}); });
}, },
mounted() {
document.title = this.$root.instanceName;
},
methods: { methods: {
create() { create() {
this.$router.push(`/i/pages/new`); this.$router.push(`/i/pages/new`);

View file

@ -62,6 +62,8 @@ export default Vue.extend({
}; };
}, },
mounted() { mounted() {
document.title = this.$root.instanceName;
this.$root.api('users/groups/owned').then(groups => { this.$root.api('users/groups/owned').then(groups => {
this.ownedGroups = groups; this.ownedGroups = groups;
}); });

View file

@ -33,6 +33,8 @@ export default Vue.extend({
}; };
}, },
mounted() { mounted() {
document.title = this.$root.instanceName;
this.$root.api('users/lists/list').then(lists => { this.$root.api('users/lists/list').then(lists => {
this.fetching = false; this.fetching = false;
this.lists = lists; this.lists = lists;

View file

@ -94,6 +94,8 @@ export default Vue.extend({
}, },
mounted() { mounted() {
document.title = this.$root.instanceName;
(this.$refs.tl as any).$once('loaded', () => { (this.$refs.tl as any).$once('loaded', () => {
this.$emit('loaded'); this.$emit('loaded');
}); });

View file

@ -13,6 +13,9 @@ export default Vue.extend({
components: { components: {
XSettings: () => import('../components/settings.vue').then(m => m.default) XSettings: () => import('../components/settings.vue').then(m => m.default)
}, },
mounted() {
document.title = this.$root.instanceName;
},
}); });
</script> </script>

View file

@ -28,7 +28,12 @@ export default class MiOS extends EventEmitter {
}; };
public get instanceName() { public get instanceName() {
return this.meta ? (this.meta.data.name || 'Misskey') : 'Misskey'; const siteName = document.querySelector('meta[property="og:site_name"]') as HTMLMetaElement;
if (siteName && siteName.content) {
return siteName.content;
}
return 'Misskey';
} }
private isMetaFetching = false; private isMetaFetching = false;

View file

@ -25,6 +25,9 @@ export default Vue.extend({
faBell, faBell,
}; };
}, },
mounted() {
document.title = this.$root.instanceName;
},
methods: { methods: {
beforeInit() { beforeInit() {
Progress.start(); Progress.start();

View file

@ -164,7 +164,8 @@ router.get('/@:user', async (ctx, next) => {
await ctx.render('user', { await ctx.render('user', {
user, profile, me, user, profile, me,
instanceName: meta.name || 'Misskey' instanceName: meta.name || 'Misskey',
icon: meta.iconUrl
}); });
ctx.set('Cache-Control', 'public, max-age=30'); ctx.set('Cache-Control', 'public, max-age=30');
} else { } else {
@ -197,7 +198,8 @@ router.get('/notes/:note', async ctx => {
await ctx.render('note', { await ctx.render('note', {
note: _note, note: _note,
summary: getNoteSummary(_note), summary: getNoteSummary(_note),
instanceName: meta.name || 'Misskey' instanceName: meta.name || 'Misskey',
icon: meta.iconUrl
}); });
if (['public', 'home'].includes(note.visibility)) { if (['public', 'home'].includes(note.visibility)) {
@ -283,6 +285,7 @@ router.get('*', async ctx => {
await ctx.render('base', { await ctx.render('base', {
img: meta.bannerUrl, img: meta.bannerUrl,
title: meta.name || 'Misskey', title: meta.name || 'Misskey',
instanceName: meta.name || 'Misskey',
desc: meta.description, desc: meta.description,
icon: meta.iconUrl icon: meta.iconUrl
}); });