all the manual fixes

shigusegubu
Henry Jameson 5 years ago
parent 1ec4caa0bb
commit 020c6d1bcf
  1. 22
      .eslintrc.js
  2. 2
      src/components/attachment/attachment.vue
  3. 2
      src/components/basic_user_card/basic_user_card.vue
  4. 2
      src/components/chat_panel/chat_panel.vue
  5. 1
      src/components/conversation/conversation.js
  6. 1
      src/components/font_control/font_control.vue
  7. 3
      src/components/gallery/gallery.vue
  8. 2
      src/components/instance_specific_panel/instance_specific_panel.vue
  9. 1
      src/components/interface_language_switcher/interface_language_switcher.vue
  10. 2
      src/components/link-preview/link-preview.vue
  11. 2
      src/components/media_modal/media_modal.vue
  12. 2
      src/components/media_upload/media_upload.vue
  13. 2
      src/components/notification/notification.vue
  14. 2
      src/components/poll/poll.vue
  15. 1
      src/components/poll/poll_form.vue
  16. 3
      src/components/post_status_form/post_status_form.vue
  17. 7
      src/components/registration/registration.vue
  18. 1
      src/components/shadow_control/shadow_control.vue
  19. 2
      src/components/status/status.js
  20. 28
      src/components/status/status.vue
  21. 2
      src/components/style_switcher/style_switcher.vue
  22. 2
      src/components/terms_of_service_panel/terms_of_service_panel.vue
  23. 4
      src/components/user_card/user_card.js
  24. 4
      src/components/user_card/user_card.vue
  25. 5
      src/components/user_settings/mfa_backup_codes.vue
  26. 1
      src/components/who_to_follow_panel/who_to_follow_panel.vue
  27. 1
      src/modules/auth_flow.js
  28. 8
      src/modules/users.js
  29. 6
      src/services/backend_interactor_service/backend_interactor_service.js
  30. 4
      test/unit/karma.conf.js
  31. 6
      test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js

@ -21,26 +21,6 @@ module.exports = {
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
// Webpack 4 update commit, most of these probably should be fixed and removed in a separate MR
// A lot of errors come from .vue files that are now properly linted
'vue/valid-v-if': 1,
'vue/use-v-on-exact': 1,
'vue/no-parsing-error': 1,
'vue/require-v-for-key': 1,
'vue/valid-v-for': 1,
'vue/require-prop-types': 1,
'vue/no-use-v-if-with-v-for': 1,
'indent': 1,
'import/first': 1,
'object-curly-spacing': 1,
'prefer-promise-reject-errors': 1,
'eol-last': 1,
'no-return-await': 1,
'no-multi-spaces': 1,
'no-trailing-spaces': 1,
'no-unused-expressions': 1,
'no-mixed-operators': 1,
'camelcase': 1,
'no-multiple-empty-lines': 1
'vue/require-prop-types': 0
}
}

@ -97,8 +97,10 @@
<img :src="attachment.thumb_url">
</div>
<div class="text">
<!-- eslint-disable vue/no-v-html -->
<h1><a :href="attachment.url">{{ attachment.oembed.title }}</a></h1>
<div v-html="attachment.oembed.oembedHTML" />
<!-- eslint-enabled vue/no-v-html -->
</div>
</div>
</div>

@ -25,11 +25,13 @@
:title="user.name"
class="basic-user-card-user-name"
>
<!-- eslint-disable vue/no-v-html -->
<span
v-if="user.name_html"
class="basic-user-card-user-name-value"
v-html="user.name_html"
/>
<!-- eslint-enable vue/no-v-html -->
<span
v-else
class="basic-user-card-user-name-value"

@ -1,6 +1,6 @@
<template>
<div
v-if="!this.collapsed || !this.floating"
v-if="!collapsed || !floating"
class="chat-panel"
>
<div class="panel panel-default">

@ -86,6 +86,7 @@ const conversation = {
},
replies () {
let i = 1
// eslint-disable-next-line camelcase
return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {
/* eslint-disable camelcase */
const irid = in_reply_to_status_id

@ -35,6 +35,7 @@
>
<option
v-for="option in availableOptions"
:key="option"
:value="option"
>
{{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}

@ -4,7 +4,8 @@
style="width: 100%;"
>
<div
v-for="row in rows"
v-for="(row, index) in rows"
:key="index"
class="gallery-row"
:style="rowHeight(row.length)"
:class="{ 'contain-fit': useContainFit, 'cover-fit': !useContainFit }"

@ -5,7 +5,9 @@
>
<div class="panel panel-default">
<div class="panel-body">
<!-- eslint-disable vue/no-v-html -->
<div v-html="instanceSpecificPanelContent" />
<!-- eslint-enable vue/no-v-html -->
</div>
</div>
</div>

@ -13,6 +13,7 @@
>
<option
v-for="(langCode, i) in languageCodes"
:key="langCode"
:value="langCode"
>
{{ languageNames[i] }}

@ -11,7 +11,7 @@
class="card-image"
:class="{ 'small-image': size === 'small' }"
>
<img :src="card.image"></img>
<img :src="card.image">
</div>
<div class="card-content">
<span class="card-host faint">{{ card.provider_name }}</span>

@ -8,7 +8,7 @@
v-if="type === 'image'"
class="modal-image"
:src="currentMedia.url"
></img>
>
<VideoAttachment
v-if="type === 'video'"
class="modal-image"

@ -23,7 +23,7 @@
style="position: fixed; top: -100em"
multiple="true"
@change="change"
></input>
>
</label>
</div>
</template>

@ -30,12 +30,14 @@
/>
<span class="notification-details">
<div class="name-and-action">
<!-- eslint-disable vue/no-v-html -->
<span
v-if="!!notification.from_profile.name_html"
class="username"
:title="'@'+notification.from_profile.screen_name"
v-html="notification.from_profile.name_html"
/>
<!-- eslint-enable vue/no-v-html -->
<span
v-else
class="username"

@ -60,7 +60,7 @@
</div>
<i18n :path="expired ? 'polls.expired' : 'polls.expires_in'">
<Timeago
:time="this.expiresAt"
:time="expiresAt"
:auto-update="60"
:now-threshold="0"
/>

@ -77,6 +77,7 @@
>
<option
v-for="unit in expiryUnits"
:key="unit"
:value="unit"
>
{{ $t(`time.${unit}_short`, ['']) }}

@ -206,6 +206,7 @@
<div class="attachments">
<div
v-for="file in newStatus.files"
:key="file.url"
class="media-upload-wrapper"
>
<i
@ -217,7 +218,7 @@
v-if="type(file) === 'image'"
class="thumbnail media-upload"
:src="file.url"
></img>
>
<video
v-if="type(file) === 'video'"
:src="file.url"

@ -215,17 +215,22 @@
</div>
</div>
<!-- eslint-disable vue/no-v-html -->
<div
class="terms-of-service"
v-html="termsOfService"
/>
<!-- eslint-enable vue/no-v-html -->
</div>
<div
v-if="serverValidationErrors.length"
class="form-group"
>
<div class="alert error">
<span v-for="error in serverValidationErrors">{{ error }}</span>
<span
v-for="error in serverValidationErrors"
:key="error"
>{{ error }}</span>
</div>
</div>
</form>

@ -72,6 +72,7 @@
>
<option
v-for="(shadow, index) in cValue"
:key="index"
:value="index"
>
{{ $t('settings.style.shadows.shadow_id', { value: index }) }}

@ -221,7 +221,7 @@ const Status = {
? this.$store.state.instance.subjectLineBehavior
: this.$store.state.config.subjectLineBehavior
const startsWithRe = decodedSummary.match(/^re[: ]/i)
if (behavior !== 'noop' && startsWithRe || behavior === 'masto') {
if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {
return decodedSummary
} else if (behavior === 'email') {
return 're: '.concat(decodedSummary)

@ -1,4 +1,5 @@
<template>
<!-- eslint-disable vue/no-v-html -->
<div
v-if="!hideStatus"
class="status-el"
@ -205,18 +206,20 @@
v-if="replies && replies.length"
class="faint"
>{{ $t('status.replies_list') }}</span>
<span
v-for="reply in replies"
v-if="replies"
class="reply-link faint"
>
<a
href="#"
@click.prevent="gotoOriginal(reply.id)"
@mouseenter="replyEnter(reply.id, $event)"
@mouseout="replyLeave()"
>{{ reply.name }}</a>
</span>
<template v-if="replies">
<span
v-for="reply in replies"
:key="reply.id"
class="reply-link faint"
>
<a
href="#"
@click.prevent="gotoOriginal(reply.id)"
@mouseenter="replyEnter(reply.id, $event)"
@mouseout="replyLeave()"
>{{ reply.name }}</a>
</span>
</template>
</div>
</div>
</div>
@ -422,6 +425,7 @@
</div>
</template>
</div>
<!-- eslint-enable vue/no-v-html -->
</template>
<script src="./status.js" ></script>

@ -24,6 +24,7 @@
>
<option
v-for="style in availableStyles"
:key="style.name"
:value="style"
:style="{
backgroundColor: style[1] || style.theme.colors.bg,
@ -463,6 +464,7 @@
>
<option
v-for="shadow in shadowsAvailable"
:key="shadow"
:value="shadow"
>
{{ $t('settings.style.shadows.components.' + shadow) }}

@ -2,10 +2,12 @@
<div>
<div class="panel panel-default">
<div class="panel-body">
<!-- eslint-disable vue/no-v-html -->
<div
class="tos-content"
v-html="content"
/>
<!-- eslint-enable vue/no-v-html -->
</div>
</div>
</div>

@ -73,12 +73,12 @@ export default {
userHighlightType: {
get () {
const data = this.$store.state.config.highlight[this.user.screen_name]
return data && data.type || 'disabled'
return (data && data.type) || 'disabled'
},
set (type) {
const data = this.$store.state.config.highlight[this.user.screen_name]
if (type !== 'disabled') {
this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: data && data.color || '#FFFFFF', type })
this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })
} else {
this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })
}

@ -15,12 +15,14 @@
</router-link>
<div class="user-summary">
<div class="top-line">
<!-- eslint-disable vue/no-v-html -->
<div
v-if="user.name_html"
:title="user.name"
class="user-name"
v-html="user.name_html"
/>
<!-- eslint-enable vue/no-v-html -->
<div
v-else
:title="user.name"
@ -237,12 +239,14 @@
<span>{{ user.followers_count }}</span>
</div>
</div>
<!-- eslint-disable vue/no-v-html -->
<p
v-if="!hideBio && user.description_html"
class="user-card-bio"
@click.prevent="linkClicked"
v-html="user.description_html"
/>
<!-- eslint-enable vue/no-v-html -->
<p
v-else-if="!hideBio"
class="user-card-bio"

@ -9,7 +9,10 @@
{{ $t('settings.mfa.recovery_codes_warning') }}
</p>
<ul class="backup-codes">
<li v-for="code in backupCodes.codes">
<li
v-for="code in backupCodes.codes"
:key="code"
>
{{ code }}
</li>
</ul>

@ -9,6 +9,7 @@
<div class="who-to-follow">
<p
v-for="user in usersToFollow"
:key="user.id"
class="who-to-follow-items"
>
<img :src="user.img">

@ -73,6 +73,7 @@ const mutations = {
// actions
const actions = {
// eslint-disable-next-line camelcase
async login ({ state, dispatch, commit }, { access_token }) {
commit('setToken', access_token, { root: true })
await dispatch('loginUser', access_token, { root: true })

@ -393,7 +393,7 @@ const users = {
}
},
async getCaptcha (store) {
return await store.rootState.api.backendInteractor.getCaptcha()
return store.rootState.api.backendInteractor.getCaptcha()
},
logout (store) {
@ -451,9 +451,9 @@ const users = {
// Authentication failed
commit('endLogin')
if (response.status === 401) {
reject('Wrong username or password')
reject(new Error('Wrong username or password'))
} else {
reject('An error occurred, please try again')
reject(new Error('An error occurred, please try again'))
}
}
commit('endLogin')
@ -462,7 +462,7 @@ const users = {
.catch((error) => {
console.log(error)
commit('endLogin')
reject('Failed to connect to server, try again')
reject(new Error('Failed to connect to server, try again'))
})
})
}

@ -63,26 +63,32 @@ const backendInteractorService = credentials => {
return notificationsFetcher.startFetching({ store, credentials })
}
// eslint-disable-next-line camelcase
const tagUser = ({ screen_name }, tag) => {
return apiService.tagUser({ screen_name, tag, credentials })
}
// eslint-disable-next-line camelcase
const untagUser = ({ screen_name }, tag) => {
return apiService.untagUser({ screen_name, tag, credentials })
}
// eslint-disable-next-line camelcase
const addRight = ({ screen_name }, right) => {
return apiService.addRight({ screen_name, right, credentials })
}
// eslint-disable-next-line camelcase
const deleteRight = ({ screen_name }, right) => {
return apiService.deleteRight({ screen_name, right, credentials })
}
// eslint-disable-next-line camelcase
const setActivationStatus = ({ screen_name }, status) => {
return apiService.setActivationStatus({ screen_name, status, credentials })
}
// eslint-disable-next-line camelcase
const deleteUser = ({ screen_name }) => {
return apiService.deleteUser({ screen_name, credentials })
}

@ -3,12 +3,12 @@
// we are also using it with karma-webpack
// https://github.com/webpack/karma-webpack
var path = require('path')
// var path = require('path')
var merge = require('webpack-merge')
var baseConfig = require('../../build/webpack.base.conf')
var utils = require('../../build/utils')
var webpack = require('webpack')
var projectRoot = path.resolve(__dirname, '../../')
// var projectRoot = path.resolve(__dirname, '../../')
var webpackConfig = merge(baseConfig, {
// use inline sourcemap for karma-sourcemap-loader

@ -163,12 +163,6 @@ const makeMockEmojiMasto = (overrides = [{}]) => {
]
}
parseNotification
parseUser
parseStatus
makeMockStatusQvitter
makeMockUserQvitter
describe('API Entities normalizer', () => {
describe('parseStatus', () => {
describe('QVitter preprocessing', () => {

Loading…
Cancel
Save