<commit_before>package confirm

import (
	"fmt"

	"github.com/wanliu/flow/builtin/config"
	"github.com/wanliu/flow/builtin/resolves"
	"github.com/wanliu/flow/context"
)

type AddressConfirm struct {
	Values []string
	// order  *resolves.OrderResolve
}

func (ac AddressConfirm) SetUp(ctx context.Context) {
	ctx.SetValue(config.CtxKeyConfirm, ac)
}

func (ac AddressConfirm) ClearUp(ctx context.Context) {
	ctx.SetValue(config.CtxKeyConfirm, nil)
}

func (ac AddressConfirm) Notice(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		if len(ac.Values) > 0 {
			return fmt.Sprintf("是否将 “%v” 做为收货地址?", ac.Values[0])
		} else {
			// ctx.SetValue(config.CtxKeyConfirm, nil)
			ac.ClearUp(ctx)

			if order.Address == "" {
				return "取消操作完成，当前订单收货地址尚未确认，请输入收货地址"
			}
		}
	} else {
		return "当前没有正在进行中的订单"
	}

	return ""
}

func (ac AddressConfirm) Cancel(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		if len(ac.Values) > 1 {
			newValues := ac.Values[1:]
			ac.Values = newValues
			// ctx.SetValue(config.CtxKeyConfirm, ac)
			ac.SetUp(ctx)

			return fmt.Sprintf("是否将 “%v” 做为收货地址?", newValues[0])
		} else {
			// ctx.SetValue(config.CtxKeyConfirm, nil)
			ac.ClearUp(ctx)

			if order.Address == "" {
				return "取消操作完成，当前订单收货地址尚未确认，请输入收货地址"
			}
		}
	} else {
		return "当前没有正在进行中的订单"
	}

	return ""
}

func (ac AddressConfirm) Confirm(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		// cConfirm := confirm.(AddressConfirm)

		if order.Address == "" {
			if len(ac.Values) > 0 {
				order.Address = ac.Values[0]

				if order.Fulfiled() {
					ctx.SetValue(config.CtxKeyOrder, nil)
					ctx.SetValue(config.CtxKeyLastOrder, order)
				} else {
					ctx.SetValue(config.CtxKeyOrder, order)
				}

				return fmt.Sprintf("已经确认\"%v\"为收货地址\n%v", ac.Values[0], order.Answer())

			} else {
				// ctx.SetValue(config.CtxKeyConfirm, nil)
				ac.ClearUp(ctx)
			}
		}<commit_msg>fix cancel on canel address<commit_after>package confirm

import (
	"fmt"

	"github.com/wanliu/flow/builtin/config"
	"github.com/wanliu/flow/builtin/resolves"
	"github.com/wanliu/flow/context"
)

type AddressConfirm struct {
	Values []string
	// order  *resolves.OrderResolve
}

func (ac AddressConfirm) SetUp(ctx context.Context) {
	ctx.SetValue(config.CtxKeyConfirm, ac)
}

func (ac AddressConfirm) ClearUp(ctx context.Context) {
	ctx.SetValue(config.CtxKeyConfirm, nil)
}

func (ac AddressConfirm) Notice(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		if len(ac.Values) > 0 {
			return fmt.Sprintf("是否将 “%v” 做为收货地址?", ac.Values[0])
		} else {
			// ctx.SetValue(config.CtxKeyConfirm, nil)
			ac.ClearUp(ctx)

			if order.Address == "" {
				return "取消操作完成，当前订单收货地址尚未确认，请输入收货地址"
			}
		}
	} else {
		return "当前没有正在进行中的订单"
	}

	return ""
}

func (ac AddressConfirm) Cancel(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		if len(ac.Values) > 1 {
			newValues := ac.Values[1:]
			ac.Values = newValues
			// ctx.SetValue(config.CtxKeyConfirm, ac)
			ac.SetUp(ctx)

			return fmt.Sprintf("是否将 “%v” 做为收货地址?", newValues[0])
		} else {
			// ctx.SetValue(config.CtxKeyConfirm, nil)
			ac.ClearUp(ctx)

			if order.Address == "" {
				return "取消操作完成，当前订单收货地址尚未确认，请输入收货地址"
			}
		}
	} else {
		return "当前没有正在进行中的订单"
	}

	return ""
}

func (ac AddressConfirm) Confirm(ctx context.Context) string {
	oIn := ctx.Value(config.CtxKeyOrder)
	// confirm := ctx.Value(config.CtxKeyConfirm)

	if oIn != nil {
		order := oIn.(resolves.OrderResolve)

		if order.Expired(config.SesssionExpiredMinutes) {
			return "当前没有正在进行中的订单"
		}

		// cConfirm := confirm.(AddressConfirm)

		if order.Address == "" {
			if len(ac.Values) > 0 {
				order.Address = ac.Values[0]

				reply := fmt.Sprintf("已经确认\"%v\"为收货地址\n%v", ac.Values[0], order.Answer())

				if order.Fulfiled() {
					ctx.SetValue(config.CtxKeyOrder, nil)
					ctx.SetValue(config.CtxKeyLastOrder, order)
				} else {
					ctx.SetValue(config.CtxKeyOrder, order)
				}

				return reply

			} else {
				// ctx.SetValue(config.CtxKeyConfirm, nil)
				ac.ClearUp(ctx)
			}
		}
{'fraction_non_alphanumeric': 0.14592445328031808, 'fraction_numerical': 0.0031809145129224653, 'mean_word_length': 3.5283528352835285, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3606192', 'n_tokens_mistral': 2283, 'n_tokens_neox': 2163, 'n_words': 322}