UNPKG

stitch-ui

Version:

59 lines (51 loc) 1.31 kB
import React from "react"; // eslint-disable-line no-unused-vars import { Map } from "immutable"; import FontAwesome from "react-fontawesome"; const ProviderDisplayNames = { "oauth2/facebook": "Facebook", "oauth2/google": "Google", "local/userpass": "Username/Password", "api/key": "API Key", "anon/user": "Anonymous", "custom/token": "Custom" }; export class User { constructor(user) { this.user = user; } getId() { return this.user._id; // eslint-disable-line no-underscore-dangle } getType() { return this.user.type; } getDisplayName() { const data = this.user.data || {}; const parts = [data.name, data.email].filter(d => d !== undefined); if (parts.length === 0) { return "(unknown)"; } return parts.join(" - "); } getProviderDisplayName() { if (!this.user.identities) { return "Unknown"; } return Map( this.user.identities.map(x => [ ProviderDisplayNames[x.provider] || "Unknown", x.provider ]) ) .keySeq() .toArray() .join(", "); } getImage() { if (!this.user.data || !this.user.data.picture) { return <FontAwesome name="user-circle" />; } return <img src={this.user.data.picture} alt={this.getDisplayName()} />; } } export default User;