Start to add readme

This commit is contained in:
Jordan Eldredge 2018-12-14 17:18:13 -08:00
parent 8e76eb9faa
commit 07d1a127ec
4 changed files with 135 additions and 17 deletions

View file

@ -9,6 +9,7 @@
"dominant-color": "^0.0.1",
"glob": "^7.1.3",
"image-average-color": "^1.0.0",
"jszip": "^3.1.5",
"lodash": "^4.17.11",
"md5-file": "^4.0.0",
"react": "^16.2.0",

View file

@ -1,6 +1,7 @@
import React from "react";
import { connect } from "react-redux";
import WebampComponent from "./WebampComponent";
import Readme from "./Readme";
import * as Utils from "./utils";
import * as Selectors from "./redux/selectors";
import { SCREENSHOT_HEIGHT, SCREENSHOT_WIDTH } from "./constants";
@ -98,20 +99,23 @@ class FocusedSkin extends React.Component {
return (
<React.Fragment>
{this.state.centered && (
<div
style={{
position: "fixed",
height: SCREENSHOT_HEIGHT,
width: SCREENSHOT_WIDTH,
transform
}}
>
<WebampComponent
key={this.props.hash} // Don't reuse instances
skinUrl={Utils.skinUrlFromHash(this.props.hash)}
loaded={this.handleWebampLoaded}
/>
</div>
<>
<div
style={{
position: "fixed",
height: SCREENSHOT_HEIGHT,
width: SCREENSHOT_WIDTH,
transform
}}
>
<WebampComponent
key={this.props.hash} // Don't reuse instances
skinUrl={Utils.skinUrlFromHash(this.props.hash)}
loaded={this.handleWebampLoaded}
/>
</div>
<Readme skinUrl={Utils.skinUrlFromHash(this.props.hash)} />
</>
)}
<div
id="focused-skin"

66
src/Readme.js Normal file
View file

@ -0,0 +1,66 @@
import React from "react";
import JSZip from "jszip";
import { switchMap } from "rxjs/operators";
import { from, empty } from "rxjs";
import Disposable from "./Disposable";
export default class Readme extends React.Component {
constructor(props) {
super(props);
this._disposable = new Disposable();
this.state = { readmeText: null };
}
componentDidMount() {
this._fetchReadme();
}
componentDidUpdate(_, oldState) {
if (this.state.skinUrl != oldState.skinUrl) {
this._fetchReadme();
}
}
componentWillUnmount() {
this._disposable.dispose();
}
_fetchReadme() {
this._disposable.add(
from(fetch(this.props.skinUrl))
.pipe(
switchMap(response => response.blob()),
switchMap(blob => JSZip.loadAsync(blob)),
switchMap(zip => {
const readme = zip.file("readme.txt");
if (readme == null) {
return empty();
}
return readme.async("string");
})
)
.subscribe(text => {
console.log(text);
// this.setState({ readmeText: text });
})
);
}
render() {
return (
this.state.readmeText && (
<pre
style={{
backgroundColor: "white",
color: "black",
position: "absolute",
width: "500px",
right: 0
}}
>
{this.state.readmeText}
</pre>
)
);
}
}

View file

@ -2179,6 +2179,10 @@ core-js@^2.4.0, core-js@^2.5.0:
version "2.5.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
core-js@~2.3.0:
version "2.3.0"
resolved "http://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -2891,6 +2895,10 @@ es6-promise@^4.1.0:
version "4.2.5"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
es6-promise@~3.0.2:
version "3.0.2"
resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6"
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@ -4125,6 +4133,10 @@ imagemagick@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/imagemagick/-/imagemagick-0.1.3.tgz#7483cea093b4d9f2e2f396857adc8821b537c56a"
immediate@~3.0.5:
version "3.0.6"
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
immer@1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/immer/-/immer-1.7.2.tgz#a51e9723c50b27e132f6566facbec1c85fc69547"
@ -5104,6 +5116,16 @@ jsx-ast-utils@^2.0.1:
dependencies:
array-includes "^3.0.3"
jszip@^3.1.5:
version "3.1.5"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37"
dependencies:
core-js "~2.3.0"
es6-promise "~3.0.2"
lie "~3.1.0"
pako "~1.0.2"
readable-stream "~2.0.6"
killable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
@ -5180,6 +5202,12 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
lie@~3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
dependencies:
immediate "~3.0.5"
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@ -6074,6 +6102,10 @@ p-try@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
pako@~1.0.2:
version "1.0.7"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27"
pako@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
@ -6869,6 +6901,10 @@ private@^0.1.6, private@^0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
process-nextick-args@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
@ -7271,6 +7307,17 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable
string_decoder "~1.0.3"
util-deprecate "~1.0.1"
readable-stream@~2.0.6:
version "2.0.6"
resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "~1.0.0"
process-nextick-args "~1.0.6"
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readdirp@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
@ -8676,9 +8723,9 @@ wbuf@^1.1.0, wbuf@^1.7.2:
dependencies:
minimalistic-assert "^1.0.0"
webamp@^1.3.0-beta.0:
version "1.3.0-beta.0"
resolved "https://registry.yarnpkg.com/webamp/-/webamp-1.3.0-beta.0.tgz#130e2c8f52313a1a96d9dad7f9ed6f4765c04f6d"
webamp@^1.3.0-beta.1:
version "1.3.0-beta.1"
resolved "https://registry.yarnpkg.com/webamp/-/webamp-1.3.0-beta.1.tgz#434e834ad6362f3fbfc1208b0f0d405f5183ec19"
webidl-conversions@^4.0.2:
version "4.0.2"