/**
@license
Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
import { LitElement, html } from '@polymer/lit-element';
import { connect } from 'pwa-helpers/connect-mixin.js';
// This element is connected to the Redux store.
import { store } from '../store.js';
//These are the actions needed by this element.
import { createComment } from '../actions/firebaseFirestore';
// Import button styles
import { ButtonSharedStyles } from './button-shared-styles.js';
class ForumElement extends connect(store)(LitElement) {
_render(props) {
return html`
${ButtonSharedStyles}
${props.day ? props.day.toDate().toLocaleDateString("en-US"): ""}${props.author}
${props.subject}
${props.content}
`;
}
static get properties() { return {
signedIn: Boolean,
author: String,
subject: String,
content: String,
day: Date,
postId: String,
comments: Array,
showComments: Boolean,
postComment: Boolean
}};
_stateChanged(state) {
this.signedIn = state.firebaseAuth.signedIn;
}
_firstRendered() {
this.updateComments();
}
constructor() {
super();
this.signedIn = false;
this.author = "";
this.content = "";
this.postId = "";
this.comments = [];
this.showComments = false;
this.postComment = false;
}
submitComment() {
var commentContent = this.shadowRoot.getElementById('comment-content-field');
if( commentContent &&
commentContent.value.trim().length > 0) {
if(confirm('Are you sure you want to submit this comment on ' + this.author + "'s post about " + this.subject + '?')) {
store.dispatch(createComment(this.postId, commentContent.value.replace('\n','
')));
commentContent.value = "";
}
} else {
alert('Please fill out comment subject and content fields.');
}
}
updateComments() {
var commentArea = this.shadowRoot.getElementById('comment-area');
commentArea.innerHTML = "";
for(var i = this.comments.length-1; i >= 0; i--) {
var commentElement = document.createElement('div');
var authorElement = document.createElement('h4');
authorElement.classList.add('comment-author');
authorElement.innerHTML = this.comments[i].user;
var contentElement = document.createElement('p');
contentElement.innerHTML = this.comments[i].content;
commentElement.appendChild(authorElement);
commentElement.appendChild(contentElement);
commentArea.appendChild(commentElement);
}
}
}
window.customElements.define('forum-element', ForumElement);