sapling/eden/fs/notifications/Notifications.h
Xavier Deguillard 99a1771351 notifications: compile on Windows
Summary:
While it's unlikely to work properly (it uses /bin/sh), it compiles properly on
Windows, so let's include it in the build.

Reviewed By: wez

Differential Revision: D23520368

fbshipit-source-id: 267ba04f98f5dacc81e1772f86f5ad43c846815d
2020-09-09 09:33:35 -07:00

48 lines
1.4 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#pragma once
#include <folly/Synchronized.h>
#include <optional>
#include "eden/fs/config/ReloadableConfig.h"
namespace facebook {
namespace eden {
class ReloadableConfig;
class Notifications {
public:
explicit Notifications(ReloadableConfig& edenConfig) : config_(edenConfig) {}
/**
* Show a generic "something went wrong" notification to the interactive
* user.
* This is implemented by invoking the command specified by the
* configuration value named:
* notifications:generic-connectivity-notification-cmd
* The intent is that that command will show a desktop "toast" notification
* to the user, but in some environments it is possible that it might instead
* trigger eg: a Workplace Messenger chat notification.
* This Notifications instance will throttle the rate at which these
* occur based on the value of the notifications:interval configuration
* which defaults to a reasonable value to avoid spamming the user.
*/
void showGenericErrorNotification(const std::exception& err);
private:
bool canShowNotification();
ReloadableConfig& config_;
folly::Synchronized<std::optional<std::chrono::steady_clock::time_point>>
lastShown_;
};
} // namespace eden
} // namespace facebook