1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import {actionPromise} from "../reducers";
- import {gql} from "../actions";
- import {useState} from "react";
- import {Link} from "react-router-dom";
- import {connect} from "react-redux";
- import {CTrack} from "./player";
- const actionTrackSearch = (word) => (
- actionPromise('trackFind', gql(`query trackById($q: String) {
- TrackFind(query: $q) {
- _id url originalFileName
- }
- }`, {q: JSON.stringify([
- {
- $or: [{originalFileName: `/${word}/`}]
- },
- {
- sort: [{originalFileName: 1}]
- }
- ])
- }
- ))
- )
- const TrackSearch = ({ onSearch }) => {
- const [value, setValue] = useState("");
- return (
- <div>
- <input
- type="text"
- placeholder="Поиск..."
- value={value}
- onChange={(e) => setValue(e.target.value)}
- />
- <Link to="/search">
- <button onClick={() => onSearch(value)}>Найти</button>
- </Link>
- </div>
- );
- };
- export const CTrackSearch = connect(null,{onSearch:actionTrackSearch})(TrackSearch)
- const SearchResult = ({ trackFind }) => {
- return (
- <>
- {trackFind.map((track) => (
- <CTrack track={track} />
- ))}
- </>
- );
- };
- export const CSearchResult = connect((state) => ({
- trackFind: state.promise.trackFind?.payload || [],
- }))(SearchResult);
|