@@ -656,10 +656,14 @@ static UniValue ListObjects(CGovernanceManager& govman, const CDeterministicMNLi
656
656
}
657
657
658
658
// USERS CAN QUERY THE SYSTEM FOR A LIST OF VARIOUS GOVERNANCE ITEMS
659
- static RPCHelpMan gobject_list ( )
659
+ static RPCHelpMan gobject_list_helper ( const bool make_a_diff )
660
660
{
661
- return RPCHelpMan{" gobject list" ,
662
- " List governance objects (can be filtered by signal and/or object type)\n " ,
661
+ const std::string command{make_a_diff ? " gobject diff" : " gobject list" };
662
+ const std::string description{make_a_diff ? " List differences since last diff or list\n "
663
+ : " List governance objects (can be filtered by signal and/or object type)\n " };
664
+
665
+ return RPCHelpMan{command,
666
+ description,
663
667
{
664
668
{" signal" , RPCArg::Type::STR, /* default */ " valid" , " cached signal, possible values: [valid|funding|delete|endorsed|all]" },
665
669
{" type" , RPCArg::Type::STR, /* default */ " all" , " object type, possible values: [proposals|triggers|all]" },
@@ -687,44 +691,20 @@ static RPCHelpMan gobject_list()
687
691
CHECK_NONFATAL (node.dmnman );
688
692
CHECK_NONFATAL (node.govman );
689
693
690
- return ListObjects (*node.govman , node.dmnman ->GetListAtChainTip (), chainman, strCachedSignal, strType, 0 );
694
+ const int64_t last_time = make_a_diff ? node.govman ->GetLastDiffTime () : 0 ;
695
+ return ListObjects (*node.govman , node.dmnman ->GetListAtChainTip (), chainman, strCachedSignal, strType, last_time);
691
696
},
692
697
};
693
698
}
694
699
695
- static RPCHelpMan gobject_diff ()
696
- {
697
- return RPCHelpMan{" gobject diff" ,
698
- " List differences since last diff or list\n " ,
699
- {
700
- {" signal" , RPCArg::Type::STR, /* default */ " valid" , " cached signal, possible values: [valid|funding|delete|endorsed|all]" },
701
- {" type" , RPCArg::Type::STR, /* default */ " all" , " object type, possible values: [proposals|triggers|all]" },
702
- },
703
- RPCResults{},
704
- RPCExamples{" " },
705
- [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
700
+ static RPCHelpMan gobject_list ()
706
701
{
707
- std::string strCachedSignal = " valid" ;
708
- if (!request.params [0 ].isNull ()) {
709
- strCachedSignal = request.params [0 ].get_str ();
710
- }
711
- if (strCachedSignal != " valid" && strCachedSignal != " funding" && strCachedSignal != " delete" && strCachedSignal != " endorsed" && strCachedSignal != " all" )
712
- return " Invalid signal, should be 'valid', 'funding', 'delete', 'endorsed' or 'all'" ;
713
-
714
- std::string strType = " all" ;
715
- if (!request.params [1 ].isNull ()) {
716
- strType = request.params [1 ].get_str ();
717
- }
718
- if (strType != " proposals" && strType != " triggers" && strType != " all" )
719
- return " Invalid type, should be 'proposals', 'triggers' or 'all'" ;
720
-
721
- const NodeContext& node = EnsureAnyNodeContext (request.context );
722
- const ChainstateManager& chainman = EnsureChainman (node);
723
- CHECK_NONFATAL (node.dmnman && node.govman );
702
+ return gobject_list_helper (false );
703
+ }
724
704
725
- return ListObjects (*node. govman , node. dmnman -> GetListAtChainTip (), chainman, strCachedSignal, strType, node. govman -> GetLastDiffTime ());
726
- },
727
- } ;
705
+ static RPCHelpMan gobject_diff ()
706
+ {
707
+ return gobject_list_helper ( true ) ;
728
708
}
729
709
730
710
// GET SPECIFIC GOVERNANCE ENTRY
0 commit comments