chore: Add formatting for the view count (#6447)

This commit is contained in:
Pranav Raj S
2023-02-13 14:29:14 -08:00
committed by GitHub
parent caca99a823
commit 98ff185d42
5 changed files with 20 additions and 6 deletions

View File

@@ -16,8 +16,7 @@ class Public::Api::V1::Portals::ArticlesController < PublicController
def set_article
@article = @category.articles.find(params[:id])
@article.views = @article.views ? @article.views + 1 : 1
@article.save
@article.increment_view_count
@parsed_content = render_article_content(@article.content)
end

View File

@@ -29,8 +29,8 @@
</router-link>
</td>
<td>
<span class="fs-small">
{{ views || 0 }}
<span class="fs-small" :title="formattedViewCount">
{{ readableViewCount }}
</span>
</td>
<td>
@@ -95,6 +95,15 @@ export default {
lastUpdatedAt() {
return this.dynamicTime(this.updatedAt);
},
formattedViewCount() {
return Number(this.views || 0).toLocaleString('en');
},
readableViewCount() {
return new Intl.NumberFormat('en-US', {
notation: 'compact',
compactDisplay: 'short',
}).format(this.views || 0);
},
articleAuthorName() {
return this.author.name;
},

View File

@@ -106,6 +106,12 @@ class Article < ApplicationRecord
update(status: :draft)
end
def increment_view_count
# rubocop:disable Rails/SkipsModelValidations
update_column(:views, views? ? views + 1 : 1)
# rubocop:enable Rails/SkipsModelValidations
end
private
def ensure_account_id

View File

@@ -41,8 +41,8 @@ RSpec.describe 'Public Articles API', type: :request do
describe 'GET /public/api/v1/portals/:slug/articles/:id' do
it 'Fetch article with the id' do
get "/hc/#{portal.slug}/#{category.locale}/#{category.slug}/#{article.id}"
expect(response).to have_http_status(:success)
expect(article.reload.views).to eq 1
end
end
end

View File

@@ -7,6 +7,6 @@ FactoryBot.define do
content { 'MyText' }
description { 'MyDescrption' }
status { 1 }
views { 1 }
views { 0 }
end
end