2016-10-26 17:03:55 +00:00
|
|
|
<template>
|
2020-10-28 06:53:23 +00:00
|
|
|
<div :class="[classes.root, 'Timeline']">
|
2018-12-17 16:14:38 +00:00
|
|
|
<div :class="classes.header">
|
2020-07-28 06:40:04 +00:00
|
|
|
<TimelineMenu v-if="!embedded" />
|
2019-07-05 07:17:44 +00:00
|
|
|
<div
|
|
|
|
v-if="timelineError"
|
|
|
|
class="loadmore-error alert error"
|
|
|
|
@click.prevent
|
|
|
|
>
|
|
|
|
{{ $t('timeline.error_fetching') }}
|
2017-06-21 14:15:45 +00:00
|
|
|
</div>
|
2019-12-05 02:48:37 +00:00
|
|
|
<div
|
2019-12-09 00:02:34 +00:00
|
|
|
v-else-if="errorData"
|
2019-12-05 02:48:37 +00:00
|
|
|
class="loadmore-error alert error"
|
|
|
|
@click.prevent
|
|
|
|
>
|
2019-12-09 01:31:57 +00:00
|
|
|
{{ errorData.statusText }}
|
2019-12-05 02:48:37 +00:00
|
|
|
</div>
|
2019-07-05 07:17:44 +00:00
|
|
|
<button
|
2020-06-30 14:02:38 +00:00
|
|
|
v-else-if="showLoadButton"
|
2019-07-05 07:17:44 +00:00
|
|
|
class="loadmore-button"
|
|
|
|
@click.prevent="showNewStatuses"
|
|
|
|
>
|
2020-06-30 14:37:36 +00:00
|
|
|
{{ loadButtonString }}
|
2018-09-03 19:12:18 +00:00
|
|
|
</button>
|
2019-07-05 07:17:44 +00:00
|
|
|
<div
|
2020-06-30 14:02:38 +00:00
|
|
|
v-else
|
2019-07-05 07:17:44 +00:00
|
|
|
class="loadmore-text faint"
|
|
|
|
@click.prevent
|
|
|
|
>
|
|
|
|
{{ $t('timeline.up_to_date') }}
|
2017-06-21 14:15:45 +00:00
|
|
|
</div>
|
2017-03-05 17:00:35 +00:00
|
|
|
</div>
|
2018-12-17 16:14:38 +00:00
|
|
|
<div :class="classes.body">
|
2020-09-29 10:18:37 +00:00
|
|
|
<div
|
|
|
|
ref="timeline"
|
|
|
|
class="timeline"
|
|
|
|
>
|
2019-07-20 02:40:37 +00:00
|
|
|
<template v-for="statusId in pinnedStatusIds">
|
|
|
|
<conversation
|
|
|
|
v-if="timeline.statusesObject[statusId]"
|
2019-07-20 02:46:11 +00:00
|
|
|
:key="statusId + '-pinned'"
|
2019-07-20 02:40:37 +00:00
|
|
|
class="status-fadein"
|
2019-09-03 17:19:14 +00:00
|
|
|
:status-id="statusId"
|
2019-07-20 02:40:37 +00:00
|
|
|
:collapsable="true"
|
2019-08-15 17:16:55 +00:00
|
|
|
:pinned-status-ids-object="pinnedStatusIdsObject"
|
2019-09-13 20:55:17 +00:00
|
|
|
:in-profile="inProfile"
|
2019-11-25 17:25:01 +00:00
|
|
|
:profile-user-id="userId"
|
2019-07-20 02:40:37 +00:00
|
|
|
/>
|
|
|
|
</template>
|
2019-07-20 20:54:30 +00:00
|
|
|
<template v-for="status in timeline.visibleStatuses">
|
|
|
|
<conversation
|
|
|
|
v-if="!excludedStatusIdsObject[status.id]"
|
|
|
|
:key="status.id"
|
|
|
|
class="status-fadein"
|
2019-09-03 17:19:14 +00:00
|
|
|
:status-id="status.id"
|
2019-07-20 20:54:30 +00:00
|
|
|
:collapsable="true"
|
2019-09-13 20:55:17 +00:00
|
|
|
:in-profile="inProfile"
|
2019-11-25 17:25:01 +00:00
|
|
|
:profile-user-id="userId"
|
2020-09-29 10:18:37 +00:00
|
|
|
:virtual-hidden="virtualScrollingEnabled && !statusesToDisplay.includes(status.id)"
|
2019-07-20 20:54:30 +00:00
|
|
|
/>
|
|
|
|
</template>
|
2016-11-06 16:44:05 +00:00
|
|
|
</div>
|
2017-03-01 19:36:37 +00:00
|
|
|
</div>
|
2018-12-17 16:14:38 +00:00
|
|
|
<div :class="classes.footer">
|
2019-07-05 07:17:44 +00:00
|
|
|
<div
|
|
|
|
v-if="count===0"
|
|
|
|
class="new-status-notification text-center panel-footer faint"
|
|
|
|
>
|
|
|
|
{{ $t('timeline.no_statuses') }}
|
2019-02-20 15:13:28 +00:00
|
|
|
</div>
|
2019-07-05 07:17:44 +00:00
|
|
|
<div
|
|
|
|
v-else-if="bottomedOut"
|
|
|
|
class="new-status-notification text-center panel-footer faint"
|
|
|
|
>
|
|
|
|
{{ $t('timeline.no_more_statuses') }}
|
2019-01-29 19:04:52 +00:00
|
|
|
</div>
|
2019-07-05 07:17:44 +00:00
|
|
|
<a
|
2019-12-09 00:02:34 +00:00
|
|
|
v-else-if="!timeline.loading && !errorData"
|
2019-07-05 07:17:44 +00:00
|
|
|
href="#"
|
|
|
|
@click.prevent="fetchOlderStatuses()"
|
|
|
|
>
|
|
|
|
<div class="new-status-notification text-center panel-footer">{{ $t('timeline.load_older') }}</div>
|
2018-04-11 16:34:40 +00:00
|
|
|
</a>
|
2019-12-05 02:48:37 +00:00
|
|
|
<a
|
2019-12-09 00:02:34 +00:00
|
|
|
v-else-if="errorData"
|
2019-12-05 02:48:37 +00:00
|
|
|
href="#"
|
|
|
|
>
|
2019-12-09 01:31:57 +00:00
|
|
|
<div class="new-status-notification text-center panel-footer">{{ errorData.error }}</div>
|
2019-12-05 02:48:37 +00:00
|
|
|
</a>
|
2019-07-05 07:17:44 +00:00
|
|
|
<div
|
|
|
|
v-else
|
|
|
|
class="new-status-notification text-center panel-footer"
|
|
|
|
>
|
2020-10-20 21:31:16 +00:00
|
|
|
<FAIcon
|
|
|
|
icon="circle-notch"
|
|
|
|
spin
|
|
|
|
size="lg"
|
|
|
|
/>
|
2019-01-29 19:04:52 +00:00
|
|
|
</div>
|
2018-04-11 16:34:40 +00:00
|
|
|
</div>
|
2016-10-26 17:03:55 +00:00
|
|
|
</div>
|
|
|
|
</template>
|
2018-12-17 16:14:38 +00:00
|
|
|
|
2016-10-26 17:03:55 +00:00
|
|
|
<script src="./timeline.js"></script>
|
2017-01-15 14:44:56 +00:00
|
|
|
|
|
|
|
<style lang="scss">
|
2018-04-01 02:28:20 +00:00
|
|
|
@import '../../_variables.scss';
|
2017-01-15 14:44:56 +00:00
|
|
|
|
2020-10-28 06:53:23 +00:00
|
|
|
.Timeline {
|
2018-04-07 16:30:27 +00:00
|
|
|
.loadmore-text {
|
2018-11-26 00:19:04 +00:00
|
|
|
opacity: 1;
|
2018-04-13 20:04:31 +00:00
|
|
|
}
|
2020-10-28 06:53:23 +00:00
|
|
|
|
|
|
|
&.-blocked {
|
2020-11-02 21:43:32 +00:00
|
|
|
cursor: progress;
|
2020-10-28 06:53:23 +00:00
|
|
|
}
|
2018-04-01 02:28:20 +00:00
|
|
|
}
|
2020-07-03 09:56:31 +00:00
|
|
|
|
|
|
|
.timeline-heading {
|
|
|
|
max-width: 100%;
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
.loadmore-button {
|
|
|
|
flex-shrink: 0;
|
|
|
|
}
|
|
|
|
.loadmore-text {
|
|
|
|
flex-shrink: 0;
|
2020-07-09 09:49:16 +00:00
|
|
|
line-height: 1em;
|
2020-07-03 09:56:31 +00:00
|
|
|
}
|
|
|
|
}
|
2017-01-15 14:44:56 +00:00
|
|
|
</style>
|