about summary refs log tree commit diff
path: root/app/javascript/themes/glitch/features/notifications/components/notification.js
diff options
context:
space:
mode:
authorbeatrix <beatrix.bitrot@gmail.com>2017-11-18 20:32:17 -0500
committerGitHub <noreply@github.com>2017-11-18 20:32:17 -0500
commitbcda3f85ce1473e9285299979a471525b2cd7034 (patch)
tree80c346945531fe17bdf94b70ecd206a07edd5258 /app/javascript/themes/glitch/features/notifications/components/notification.js
parentdec960c828390466c8fa802ac30e68041a64bff6 (diff)
parent92cc79be7206534e8c9a9957cc89b5d0eb0bcfac (diff)
Merge pull request #226 from glitch-soc/glitch-theme
Glitch/Vanilla themes
Diffstat (limited to 'app/javascript/themes/glitch/features/notifications/components/notification.js')
-rw-r--r--app/javascript/themes/glitch/features/notifications/components/notification.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/app/javascript/themes/glitch/features/notifications/components/notification.js b/app/javascript/themes/glitch/features/notifications/components/notification.js
new file mode 100644
index 000000000..a309d3a42
--- /dev/null
+++ b/app/javascript/themes/glitch/features/notifications/components/notification.js
@@ -0,0 +1,88 @@
+//  Package imports.
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+
+//  Our imports,
+import StatusContainer from 'themes/glitch/containers/status_container';
+import NotificationFollow from './follow';
+
+export default class Notification extends ImmutablePureComponent {
+
+  static propTypes = {
+    notification: ImmutablePropTypes.map.isRequired,
+    hidden: PropTypes.bool,
+    onMoveUp: PropTypes.func.isRequired,
+    onMoveDown: PropTypes.func.isRequired,
+    onMention: PropTypes.func.isRequired,
+    settings: ImmutablePropTypes.map.isRequired,
+  };
+
+  renderFollow () {
+    const { notification } = this.props;
+    return (
+      <NotificationFollow
+        id={notification.get('id')}
+        account={notification.get('account')}
+        notification={notification}
+      />
+    );
+  }
+
+  renderMention () {
+    const { notification } = this.props;
+    return (
+      <StatusContainer
+        id={notification.get('status')}
+        notification={notification}
+        withDismiss
+      />
+    );
+  }
+
+  renderFavourite () {
+    const { notification } = this.props;
+    return (
+      <StatusContainer
+        id={notification.get('status')}
+        account={notification.get('account')}
+        prepend='favourite'
+        muted
+        notification={notification}
+        withDismiss
+      />
+    );
+  }
+
+  renderReblog () {
+    const { notification } = this.props;
+    return (
+      <StatusContainer
+        id={notification.get('status')}
+        account={notification.get('account')}
+        prepend='reblog'
+        muted
+        notification={notification}
+        withDismiss
+      />
+    );
+  }
+
+  render () {
+    const { notification } = this.props;
+    switch(notification.get('type')) {
+    case 'follow':
+      return this.renderFollow();
+    case 'mention':
+      return this.renderMention();
+    case 'favourite':
+      return this.renderFavourite();
+    case 'reblog':
+      return this.renderReblog();
+    default:
+      return null;
+    }
+  }
+
+}