Merge pull request #5706 from LLK/release/2021-07-07

Master release/2021-07-07
This commit is contained in:
Paul Kaplan 2021-07-08 10:31:26 -04:00 committed by GitHub
commit ce3313a05d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 60 additions and 62 deletions

40
package-lock.json generated
View file

@ -504,9 +504,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.762", "version": "1.3.766",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.762.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.766.tgz",
"integrity": "sha512-LehWjRpfPcK8F1Lf/NZoAwWLWnjJVo0SZeQ9j/tvnBWYcT99qDqgo4raAfS2oTKZjPrR/jxruh85DGgDUmywEA==", "integrity": "sha512-u2quJ862q9reRKh/je3GXis3w38+RoXH1J9N3XjtsS6NzmUAosNsyZgUVFZPN/ZlJ3v6T0rTyZR3q/J5c6Sy5w==",
"dev": true "dev": true
}, },
"semver": { "semver": {
@ -20853,9 +20853,9 @@
} }
}, },
"scratch-blocks": { "scratch-blocks": {
"version": "0.1.0-prerelease.20210629072645", "version": "0.1.0-prerelease.20210701042432",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210629072645.tgz", "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210701042432.tgz",
"integrity": "sha512-FpP4YIUQg3dgAKvn5QQ26DeBJyt4XsuJffXoFR5S5SLLuUgfWlh2+YYPx4otLj89neywvt7wqu/3pepYGyASOw==", "integrity": "sha512-cJMwFz32YFlCq8fVBFLTqHjWYU9/TIOLVOi77aXD93TtZIhzhq80AgFmB6607XlBsWavd65bZ1pZ2FC32q0Sog==",
"dev": true, "dev": true,
"requires": { "requires": {
"exports-loader": "0.6.3", "exports-loader": "0.6.3",
@ -20863,9 +20863,9 @@
} }
}, },
"scratch-gui": { "scratch-gui": {
"version": "0.1.0-prerelease.20210629084355", "version": "0.1.0-prerelease.20210707095345",
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210629084355.tgz", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210707095345.tgz",
"integrity": "sha512-bFEx92eZkC/gPpWulvktGEUvX5u/ncIJy4r44YIMs1B+R5xbnu2yauOSVbrc+D18iMLzdB9LvL7HPpcDE4zw2Q==", "integrity": "sha512-m8lCy3p1UxPBBFngZpYiWhEomTTAFhid4NTtoughFl/MQQ8kpqy8phVTuK51ieD/DMXRuJdISP1jKRgzd7UQ+Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"arraybuffer-loader": "^1.0.6", "arraybuffer-loader": "^1.0.6",
@ -20916,8 +20916,8 @@
"redux": "3.7.2", "redux": "3.7.2",
"redux-throttle": "0.1.1", "redux-throttle": "0.1.1",
"scratch-audio": "0.1.0-prerelease.20200528195344", "scratch-audio": "0.1.0-prerelease.20200528195344",
"scratch-blocks": "0.1.0-prerelease.20210629072645", "scratch-blocks": "0.1.0-prerelease.20210701042432",
"scratch-l10n": "3.13.20210629031507", "scratch-l10n": "3.13.20210703031554",
"scratch-paint": "0.2.0-prerelease.20210615011117", "scratch-paint": "0.2.0-prerelease.20210615011117",
"scratch-render": "0.1.0-prerelease.20210325231800", "scratch-render": "0.1.0-prerelease.20210325231800",
"scratch-render-fonts": "1.0.0-prerelease.20210401210003", "scratch-render-fonts": "1.0.0-prerelease.20210401210003",
@ -21086,9 +21086,9 @@
"dev": true "dev": true
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.761", "version": "1.3.769",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.761.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.769.tgz",
"integrity": "sha512-7a/wV/plM/b95XjTdA2Q4zAxxExTDKkNQpTiaU/nVT8tGCQVtX9NsnTjhALBFICpOB58hU6xg5fFC3CT2Bybpg==", "integrity": "sha512-B+3hW8D76/uoTPSobWI3D/CFn2S4jPn88dVJ+BkD88Lz6LijQpL+hfdzIFJGTQK4KdE0XwmNbjUQFH1OQVwKdQ==",
"dev": true "dev": true
}, },
"has-flag": { "has-flag": {
@ -21309,9 +21309,9 @@
"dev": true "dev": true
}, },
"scratch-l10n": { "scratch-l10n": {
"version": "3.13.20210629031507", "version": "3.13.20210703031554",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.13.20210629031507.tgz", "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.13.20210703031554.tgz",
"integrity": "sha512-IxBJKogspgEe6879EpLFkrU524tFMN5avsFNVeAKJn1rO1RODOEfpGl4U27gq6WlhiYSGaqtoB8ObXvRHMWhmg==", "integrity": "sha512-SY6+VqsJ4/Ft49KnqWLsr0hP1cZuZ1itkSHv+nsEj3Q3zePadVa1eoC4+gL/lEBeg3iEtGjWU4JhiSuDkMsETQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/cli": "^7.1.2", "@babel/cli": "^7.1.2",
@ -21386,9 +21386,9 @@
} }
}, },
"scratch-l10n": { "scratch-l10n": {
"version": "3.13.20210630031503", "version": "3.13.20210704031505",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.13.20210630031503.tgz", "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.13.20210704031505.tgz",
"integrity": "sha512-2LIumtLBd8KVg2YpmJlToMHH24CPlV+4crcyPbI4gScHnFKGKHTQK0eZNCMO7tZEMi47hfl8xXVbIcryhi3iNQ==", "integrity": "sha512-tWBnK5yh4e39fV8EBErbBS9E1ofKskqM6b5NGRy3PtE00yttcsefzdtvi+DtNo+4ZpOPBjQtegm+KNyhZLpdxA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/cli": "^7.1.2", "@babel/cli": "^7.1.2",

View file

@ -127,8 +127,8 @@
"redux-mock-store": "^1.2.3", "redux-mock-store": "^1.2.3",
"redux-thunk": "2.0.1", "redux-thunk": "2.0.1",
"sass-loader": "6.0.6", "sass-loader": "6.0.6",
"scratch-gui": "0.1.0-prerelease.20210629084355", "scratch-gui": "0.1.0-prerelease.20210707095345",
"scratch-l10n": "3.13.20210630031503", "scratch-l10n": "3.13.20210704031505",
"selenium-webdriver": "3.6.0", "selenium-webdriver": "3.6.0",
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",
"style-loader": "0.12.3", "style-loader": "0.12.3",

View file

@ -17,6 +17,8 @@ const Errors = keyMirror({
MANAGER_LIMIT: null MANAGER_LIMIT: null
}); });
const PER_PAGE_LIMIT = 24;
const normalizeError = (err, body, res) => { const normalizeError = (err, body, res) => {
if (err) return Errors.NETWORK; if (err) return Errors.NETWORK;
if (res.statusCode === 400 && body.message === 'too many owners') { if (res.statusCode === 400 && body.message === 'too many owners') {
@ -40,15 +42,14 @@ const loadManagers = () => ((dispatch, getState) => {
const state = getState(); const state = getState();
const studioId = selectStudioId(state); const studioId = selectStudioId(state);
const managerCount = managers.selector(state).items.length; const managerCount = managers.selector(state).items.length;
const managersPerPage = 20;
const opts = { const opts = {
uri: `/studios/${studioId}/managers/`, uri: `/studios/${studioId}/managers/`,
params: {limit: managersPerPage, offset: managerCount} params: {limit: PER_PAGE_LIMIT, offset: managerCount}
}; };
api(withAdmin(opts, state), (err, body, res) => { api(withAdmin(opts, state), (err, body, res) => {
const error = normalizeError(err, body, res); const error = normalizeError(err, body, res);
if (error) return dispatch(managers.actions.error(error)); if (error) return dispatch(managers.actions.error(error));
dispatch(managers.actions.append(body, body.length === managersPerPage)); dispatch(managers.actions.append(body, body.length === PER_PAGE_LIMIT));
}); });
}); });
@ -56,15 +57,14 @@ const loadCurators = () => ((dispatch, getState) => {
const state = getState(); const state = getState();
const studioId = selectStudioId(state); const studioId = selectStudioId(state);
const curatorCount = curators.selector(state).items.length; const curatorCount = curators.selector(state).items.length;
const curatorsPerPage = 20;
const opts = { const opts = {
uri: `/studios/${studioId}/curators/`, uri: `/studios/${studioId}/curators/`,
params: {limit: curatorsPerPage, offset: curatorCount} params: {limit: PER_PAGE_LIMIT, offset: curatorCount}
}; };
api(withAdmin(opts, state), (err, body, res) => { api(withAdmin(opts, state), (err, body, res) => {
const error = normalizeError(err, body, res); const error = normalizeError(err, body, res);
if (error) return dispatch(curators.actions.error(error)); if (error) return dispatch(curators.actions.error(error));
dispatch(curators.actions.append(body, body.length === curatorsPerPage)); dispatch(curators.actions.append(body, body.length === PER_PAGE_LIMIT));
}); });
}); });

View file

@ -17,6 +17,8 @@ const Errors = keyMirror({
USER_MUTED: null USER_MUTED: null
}); });
const PER_PAGE_LIMIT = 24;
const normalizeError = (err, body, res) => { const normalizeError = (err, body, res) => {
if (err) return Errors.NETWORK; if (err) return Errors.NETWORK;
if (res.statusCode === 403 && body.mute_status) return Errors.USER_MUTED; if (res.statusCode === 403 && body.mute_status) return Errors.USER_MUTED;
@ -32,15 +34,14 @@ const loadProjects = () => ((dispatch, getState) => {
const state = getState(); const state = getState();
const studioId = selectStudioId(state); const studioId = selectStudioId(state);
const projectCount = projects.selector(state).items.length; const projectCount = projects.selector(state).items.length;
const projectsPerPage = 20;
const opts = { const opts = {
uri: `/studios/${studioId}/projects/`, uri: `/studios/${studioId}/projects/`,
params: {limit: projectsPerPage, offset: projectCount} params: {limit: PER_PAGE_LIMIT, offset: projectCount}
}; };
api(withAdmin(opts, state), (err, body, res) => { api(withAdmin(opts, state), (err, body, res) => {
const error = normalizeError(err, body, res); const error = normalizeError(err, body, res);
if (error) return dispatch(projects.actions.error(error)); if (error) return dispatch(projects.actions.error(error));
dispatch(projects.actions.append(body, body.length === projectsPerPage)); dispatch(projects.actions.append(body, body.length === PER_PAGE_LIMIT));
}); });
}); });

View file

@ -92,9 +92,8 @@ const UserProjectsModal = ({
onRemove={onRemove} onRemove={onRemove}
/> />
))} ))}
</div>
{moreToLoad && {moreToLoad &&
<div className="studio-projects-load-more"> <div className="studio-grid-load-more">
<button <button
className={classNames('button', { className={classNames('button', {
'mod-mutating': loading 'mod-mutating': loading
@ -105,6 +104,8 @@ const UserProjectsModal = ({
</button> </button>
</div> </div>
} }
</div>
</React.Fragment> </React.Fragment>
} }
{!loading && items.length === 0 && {!loading && items.length === 0 &&

View file

@ -44,10 +44,6 @@
} }
} }
.studio-projects-load-more {
display: contents;
}
.studio-projects-done-row { .studio-projects-done-row {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;

View file

@ -196,8 +196,8 @@ const StudioActivity = ({items, loading, error, moreToLoad, onLoadMore}) => {
getComponentForItem(item) getComponentForItem(item)
)} )}
</ul> </ul>
<div>
{moreToLoad && {moreToLoad &&
<div className="studio-grid-load-more">
<button <button
className={classNames('button', { className={classNames('button', {
'mod-mutating': loading 'mod-mutating': loading
@ -206,8 +206,8 @@ const StudioActivity = ({items, loading, error, moreToLoad, onLoadMore}) => {
> >
<FormattedMessage id="general.loadMore" /> <FormattedMessage id="general.loadMore" />
</button> </button>
}
</div> </div>
}
</div> </div>
); );
}; };

View file

@ -66,7 +66,7 @@ const StudioCurators = ({
/>) />)
)} )}
{moreToLoad && {moreToLoad &&
<div className="studio-members-load-more"> <div className="studio-grid-load-more">
<button <button
className={classNames('button', { className={classNames('button', {
'mod-mutating': loading 'mod-mutating': loading

View file

@ -103,7 +103,7 @@ const StudioManagers = ({
/>) />)
)} )}
{moreToLoad && {moreToLoad &&
<div className="studio-members-load-more"> <div className="studio-grid-load-more">
<button <button
className={classNames('button', { className={classNames('button', {
'mod-mutating': loading 'mod-mutating': loading

View file

@ -105,7 +105,7 @@ const StudioProjects = ({
/>) />)
)} )}
{moreToLoad && {moreToLoad &&
<div className="studio-projects-load-more"> <div className="studio-grid-load-more">
<button <button
className={classNames('button', { className={classNames('button', {
'mod-mutating': loading 'mod-mutating': loading

View file

@ -270,9 +270,12 @@ $radius: 8px;
} }
column-gap: 20px; column-gap: 20px;
row-gap: 20px; row-gap: 20px;
}
.studio-projects-load-more { .studio-grid-load-more {
grid-column: 1 / -1; grid-column: 1 / -1;
button {
width: 100%;
} }
} }
@ -345,9 +348,6 @@ $radius: 8px;
} }
column-gap: 20px; column-gap: 20px;
row-gap: 20px; row-gap: 20px;
.studio-members-load-more {
grid-column: 1 / -1;
}
} }
.studio-tabs { .studio-tabs {