Browse Source

feature(refresh channels): ability to refresh channels

renovate/lint-staged-8.x
Jack Mallers 7 years ago
parent
commit
6e2dde1dfe
  1. 6
      app/app.global.scss
  2. 32
      app/components/Channels/Channels.js
  3. 24
      app/components/Channels/Channels.scss
  4. 10
      app/keyframes.scss
  5. 2
      app/routes/wallet/components/Wallet.js

6
app/app.global.scss

@ -67,3 +67,9 @@ body {
stroke: darken($main, 10%); stroke: darken($main, 10%);
} }
} }
@keyframes spin {
100% {
transform: rotate(360deg);
}
}

32
app/components/Channels/Channels.js

@ -1,6 +1,7 @@
import React from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import { TiPlus } from 'react-icons/lib/ti' import { TiPlus } from 'react-icons/lib/ti'
import { FaRepeat } from 'react-icons/lib/fa'
import ChannelModal from './ChannelModal' import ChannelModal from './ChannelModal'
import ChannelForm from './ChannelForm' import ChannelForm from './ChannelForm'
import Channel from './Channel' import Channel from './Channel'
@ -9,6 +10,7 @@ import ClosedPendingChannel from './ClosedPendingChannel'
import styles from './Channels.scss' import styles from './Channels.scss'
const Channels = ({ const Channels = ({
fetchChannels,
ticker, ticker,
peers, peers,
channelsLoading, channelsLoading,
@ -22,7 +24,22 @@ const Channels = ({
closeChannel, closeChannel,
currentTicker, currentTicker,
explorerLinkBase explorerLinkBase
}) => ( }) => {
const refreshClicked = (event) => {
// store event in icon so we dont get an error when react clears it
let icon = event.currentTarget
// fetch channels
fetchChannels()
// clear animation after the second so we can reuse it
setTimeout(() => icon.style.animation = '', 1000)
// spin icon for 1 sec
icon.style.animation = 'spin 1000ms linear 1'
}
return (
<div className={styles.channels}> <div className={styles.channels}>
<ChannelModal <ChannelModal
isOpen={channelModalOpen} isOpen={channelModalOpen}
@ -34,6 +51,16 @@ const Channels = ({
<ChannelForm form={channelForm} setForm={setChannelForm} ticker={ticker} peers={peers} openChannel={openChannel} currentTicker={currentTicker} /> <ChannelForm form={channelForm} setForm={setChannelForm} ticker={ticker} peers={peers} openChannel={openChannel} currentTicker={currentTicker} />
<div className={styles.header}> <div className={styles.header}>
<h3>Channels</h3> <h3>Channels</h3>
<span
className={`${styles.refresh} hint--top`}
data-hint='Refresh your channels list'
>
<FaRepeat
style={{ verticalAlign: 'baseline' }}
onClick={refreshClicked}
/>
</span>
<div <div
className={`${styles.openChannel} hint--top`} className={`${styles.openChannel} hint--top`}
data-hint='Open a channel' data-hint='Open a channel'
@ -82,7 +109,8 @@ const Channels = ({
} }
</ul> </ul>
</div> </div>
) )
}
Channels.propTypes = { Channels.propTypes = {
ticker: PropTypes.object.isRequired, ticker: PropTypes.object.isRequired,

24
app/components/Channels/Channels.scss

@ -1,5 +1,15 @@
@import '../../variables.scss'; @import '../../variables.scss';
@keyframes spin {
from {
transform: rotate(0deg)
}
to {
transform: rotate(360deg);
}
}
.channels { .channels {
width: 75%; width: 75%;
margin: 50px auto; margin: 50px auto;
@ -15,6 +25,20 @@
text-align: left; text-align: left;
} }
.refresh {
cursor: pointer;
margin-left: 5px;
font-size: 12px;
vertical-align: top;
color: $darkestgrey;
line-height: 14px;
transition: color 0.25s;
&:hover {
color: $main;
}
}
.openChannel { .openChannel {
float: right; float: right;
cursor: pointer; cursor: pointer;

10
app/keyframes.scss

@ -31,3 +31,13 @@
75% { color: $gold; } 75% { color: $gold; }
100% { color: $white; } 100% { color: $white; }
} }
@keyframes spin {
from {
transform:rotate(0deg)
}
to {
transform:rotate(360deg);
}
}

2
app/routes/wallet/components/Wallet.js

@ -21,6 +21,7 @@ class Wallet extends Component {
ticker, ticker,
peers: { peersLoading, peers, peer, peerForm }, peers: { peersLoading, peers, peer, peerForm },
channels: { channelsLoading, channels, channel, channelForm, pendingChannels }, channels: { channelsLoading, channels, channel, channelForm, pendingChannels },
fetchChannels,
setPeer, setPeer,
setChannel, setChannel,
peerModalOpen, peerModalOpen,
@ -64,6 +65,7 @@ class Wallet extends Component {
disconnect={disconnectRequest} disconnect={disconnectRequest}
/> />
<Channels <Channels
fetchChannels={fetchChannels}
ticker={ticker} ticker={ticker}
peers={peers} peers={peers}
channelsLoading={channelsLoading} channelsLoading={channelsLoading}

Loading…
Cancel
Save