Merge pull request #1903 from lbryio/subscriptions-sorting
fix: sorting on subscriptions with multiple claims in same block
This commit is contained in:
commit
5a9db78bd5
2 changed files with 30 additions and 22 deletions
|
@ -3,23 +3,7 @@ import * as React from 'react';
|
||||||
import { buildURI } from 'lbry-redux';
|
import { buildURI } from 'lbry-redux';
|
||||||
import { FormField } from 'component/common/form';
|
import { FormField } from 'component/common/form';
|
||||||
import FileCard from 'component/fileCard';
|
import FileCard from 'component/fileCard';
|
||||||
|
import type { FileInfo } from 'types/file_info';
|
||||||
type FileInfo = {
|
|
||||||
name: string,
|
|
||||||
channelName: ?string,
|
|
||||||
pending?: boolean,
|
|
||||||
channel_claim_id: string,
|
|
||||||
value?: {
|
|
||||||
publisherSignature: {
|
|
||||||
certificateId: string,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
publisherSignature: {
|
|
||||||
certificateId: string,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
hideFilter: boolean,
|
hideFilter: boolean,
|
||||||
|
@ -50,7 +34,7 @@ class FileList extends React.PureComponent<Props, State> {
|
||||||
this.sortFunctions = {
|
this.sortFunctions = {
|
||||||
dateNew: fileInfos =>
|
dateNew: fileInfos =>
|
||||||
this.props.sortByHeight
|
this.props.sortByHeight
|
||||||
? fileInfos.slice().sort((fileInfo1, fileInfo2) => {
|
? fileInfos.sort((fileInfo1, fileInfo2) => {
|
||||||
if (fileInfo1.pending) {
|
if (fileInfo1.pending) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -60,11 +44,16 @@ class FileList extends React.PureComponent<Props, State> {
|
||||||
const height2 = this.props.claimsById[fileInfo2.claim_id]
|
const height2 = this.props.claimsById[fileInfo2.claim_id]
|
||||||
? this.props.claimsById[fileInfo2.claim_id].height
|
? this.props.claimsById[fileInfo2.claim_id].height
|
||||||
: 0;
|
: 0;
|
||||||
if (height1 > height2) {
|
|
||||||
return -1;
|
if (height1 !== height2) {
|
||||||
} else if (height1 < height2) {
|
// flipped because heigher block height is newer
|
||||||
return 1;
|
return height2 - height1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fileInfo1.absolute_channel_position && fileInfo2.absolute_channel_position) {
|
||||||
|
return fileInfo1.absolute_channel_position - fileInfo2.absolute_channel_position;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
})
|
})
|
||||||
: [...fileInfos].reverse(),
|
: [...fileInfos].reverse(),
|
||||||
|
|
19
src/renderer/types/file_info.js
Normal file
19
src/renderer/types/file_info.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
// @flow
|
||||||
|
|
||||||
|
export type FileInfo = {
|
||||||
|
absolute_channel_position: ?number,
|
||||||
|
name: string,
|
||||||
|
channelName: ?string,
|
||||||
|
pending?: boolean,
|
||||||
|
channel_claim_id: string,
|
||||||
|
value?: {
|
||||||
|
publisherSignature: {
|
||||||
|
certificateId: string,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
metadata: {
|
||||||
|
publisherSignature: {
|
||||||
|
certificateId: string,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
Loading…
Reference in a new issue