Merge branch 'develop' into bugfix/61465

This commit is contained in:
Anton Suhorukov 2023-03-06 13:11:04 +03:00
commit d35284a1b7
11 changed files with 52 additions and 29 deletions

View File

@ -58,7 +58,7 @@ public static class ChannelExtension
await outputs[index].Writer.WriteAsync(item, cancellationToken);
}
}
catch (OperationCanceledException ex)
catch (OperationCanceledException)
{
// TODO: catch error via additional channel
// var error = Channel.CreateUnbounded<T>();
@ -96,7 +96,7 @@ public static class ChannelExtension
await Task.WhenAll(inputs.Select(i => Redirect(i)).ToArray());
}
catch (OperationCanceledException ex)
catch (OperationCanceledException)
{
// TODO: catch error via additional channel
// var error = Channel.CreateUnbounded<T>();

View File

@ -18,7 +18,7 @@ class ConfirmRoute extends React.Component {
}
componentDidMount() {
const { forUnauthorized, history, isAuthenticated } = this.props;
const { forUnauthorized, isAuthenticated } = this.props;
if (forUnauthorized && isAuthenticated) {
this.props.logout();
@ -42,18 +42,25 @@ class ConfirmRoute extends React.Component {
.then((validationResult) => {
switch (validationResult) {
case ValidationResult.Ok:
const confirmHeader = `${confirmLinkData}&${search.slice(1)}`;
const confirmHeader = search.slice(1);
const linkData = {
...confirmLinkData,
confirmHeader,
};
console.log("checkConfirmLink", {
confirmLinkData,
validationResult,
linkData,
});
this.setState({
isLoaded: true,
linkData,
});
break;
case ValidationResult.Invalid:
console.error("invlid link");
console.error("invlid link", { confirmLinkData, validationResult });
window.location.href = combineUrl(
window.DocSpaceConfig?.proxy?.url,
path,
@ -61,7 +68,10 @@ class ConfirmRoute extends React.Component {
);
break;
case ValidationResult.Expired:
console.error("expired link");
console.error("expired link", {
confirmLinkData,
validationResult,
});
window.location.href = combineUrl(
window.DocSpaceConfig?.proxy?.url,
path,
@ -69,7 +79,10 @@ class ConfirmRoute extends React.Component {
);
break;
default:
console.error("unknown link");
console.error("unknown link", {
confirmLinkData,
validationResult,
});
window.location.href = combineUrl(
window.DocSpaceConfig?.proxy?.url,
path,
@ -79,7 +92,7 @@ class ConfirmRoute extends React.Component {
}
})
.catch((error) => {
console.error(error);
console.error("FAILED checkConfirmLink", { error, confirmLinkData });
window.location.href = combineUrl(
window.DocSpaceConfig?.proxy?.url,
path,

View File

@ -159,13 +159,13 @@ class FilesStore {
if (!(this.isLoading || this.operationAction))
switch (opt?.cmd) {
case "create":
this.wsModifyFolderCreate();
this.wsModifyFolderCreate(opt);
break;
case "update":
this.wsModifyFolderUpdate();
this.wsModifyFolderUpdate(opt);
break;
case "delete":
this.wsModifyFolderDelete();
this.wsModifyFolderDelete(opt);
break;
}

View File

@ -61,7 +61,6 @@ function ImageViewer({
const isDoubleTapRef = useRef<boolean>(false);
const setTimeoutIDTapRef = useRef<NodeJS.Timeout>();
const startAngleRef = useRef<number>(0);
const scaleRef = useRef<number>(1);
const toolbarRef = useRef<ImperativeHandle>(null);
const [scale, setScale] = useState(1);
@ -73,7 +72,7 @@ function ImageViewer({
height: 0,
x: 0,
y: 0,
scale: 5,
scale: 1,
rotate: 0,
opacity: 1,
}));
@ -702,8 +701,6 @@ function ImageViewer({
const point = calculateAdjustBounds(dx, dy, ratio, dRotate);
scaleRef.current = dScale;
api.start({
...point,
scale: dScale,
@ -813,7 +810,6 @@ function ImageViewer({
onWheel: ({
first,
offset: [, yWheel],
lastOffset: [, lYWheel],
movement: [, mYWheel],
pinching,
memo,
@ -827,8 +823,8 @@ function ImageViewer({
)
return memo;
resetToolbarVisibleTimer();
const dScale = (-1 * yWheel) / RatioWheel;
const lScale = (-1 * lYWheel) / RatioWheel;
const mScale = (-1 * mYWheel) / RatioWheel;
if (first || !memo) {
@ -845,7 +841,7 @@ function ImageViewer({
const dx = memo[0] - mScale * memo[2];
const dy = memo[1] - mScale * memo[3];
const ratio = dScale / lScale;
const ratio = dScale / style.scale.get();
const point = calculateAdjustImage(
calculateAdjustBounds(dx, dy, ratio),
@ -957,6 +953,7 @@ function ImageViewer({
<ImageViewerToolbar
ref={toolbarRef}
toolbar={toolbar}
percentValue={style.scale.get()}
generateContextMenu={generateContextMenu}
setIsOpenContextMenu={setIsOpenContextMenu}
toolbarEvent={toolbarEvent}

View File

@ -8,6 +8,7 @@ interface ImageViewerToolbarProps {
right?: string,
bottom?: string
) => JSX.Element;
percentValue: number;
setIsOpenContextMenu: Dispatch<SetStateAction<boolean>>;
toolbarEvent: (item: ToolbarItemType) => void;
}

View File

@ -21,6 +21,7 @@ import MediaContextMenu from "PUBLIC_DIR/images/vertical-dots.react.svg";
function ImageViewerToolbar(
{
toolbar,
percentValue,
toolbarEvent,
generateContextMenu,
setIsOpenContextMenu,
@ -28,7 +29,9 @@ function ImageViewerToolbar(
ref: ForwardedRef<ImperativeHandle>
) {
const [isOpen, setIsOpen] = useState<boolean>(false);
const [percent, setPercent] = useState<number>(100);
const [percent, setPercent] = useState<number>(() =>
Math.round(percentValue * 100)
);
useImperativeHandle(
ref,

View File

@ -1,4 +1,3 @@
import history from "../history";
export default function (page) {
if (
window.location.pathname === page ||
@ -6,9 +5,8 @@ export default function (page) {
) {
return false;
}
//TODO: check if we already on default page
window.location.replace(page);
history.push(page); // SSR crash
return true;
}

View File

@ -102,7 +102,7 @@ const LoginForm: React.FC<ILoginFormProps> = ({
focusInput();
window.authCallback = authCallback;
}, []);
}, [message, confirmedEmail]);
const onChangeLogin = (e: React.ChangeEvent<HTMLInputElement>) => {
//console.log("onChangeLogin", e.target.value);

View File

@ -110,7 +110,7 @@ public class Startup : BaseWorkerStartup
services.AddBaseDbContextPool<FilesDbContext>();
services.AddSingleton(Channel.CreateUnbounded<FileData<int>>(new UnboundedChannelOptions { SingleReader = true, SingleWriter = false }));
services.AddSingleton(Channel.CreateUnbounded<FileData<int>>());
services.AddSingleton(svc => svc.GetRequiredService<Channel<FileData<int>>>().Reader);
services.AddSingleton(svc => svc.GetRequiredService<Channel<FileData<int>>>().Writer);
}

View File

@ -25,6 +25,8 @@
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
using ASC.Data.Storage.DiscStorage;
namespace ASC.Files.ThumbnailBuilder;
[Scope]
@ -354,10 +356,20 @@ public class Builder<T>
{
using var sourceImg = await Image.LoadAsync(stream);
Parallel.ForEach(_config.Sizes, async w =>
if (_globalStore.GetStore() is DiscDataStore)
{
await CropAsync(sourceImg, fileDao, file, w.Width, w.Height);
});
foreach(var w in _config.Sizes)
{
await CropAsync(sourceImg, fileDao, file, w.Width, w.Height);
}
}
else
{
await Parallel.ForEachAsync(_config.Sizes, new ParallelOptions { MaxDegreeOfParallelism = 4 }, async (w, t) =>
{
await CropAsync(sourceImg, fileDao, file, w.Width, w.Height);
});
}
GC.Collect();
}

View File

@ -66,8 +66,7 @@ public class ThumbnailBuilderService : BackgroundService
for (var i = 0; i < readers.Count; i++)
{
var reader = readers[i];
var index = i;
tasks.Add(Task.Run(async () =>
{
await foreach (var fileData in reader.ReadAllAsync(stoppingToken))